python - Django Admin 反复注销。可能是因为DB损坏了。如何解决这种情况?
问题描述
让我描述一下这个问题管理员注销问题是如何发生的。
那是几个月前的事了。我的数据库是 MSSQL。
我使用的是 Django 1.11,我希望更新到 Django 3.x。
首先,我将我的 Django 更新到 3.1,因此,
我必须将 django-pyodbc-azure 切换到 django-mssql-backend。
在我将 Django 更新到 3.1 之后,我确实迁移了。
但我不知道 mssql-backend 不支持 Django 3.1。
所以我将我的 Django 从 3.1 切换到 3.0.x
我记得我必须再次迁移。
但是我自己的模型的迁移是一样的。
我没有在我的模型中添加任何新的迁移。
所以 Django 创建了一些不属于我的迁移,
对我来说也遥不可及。
我意识到 Django 在我迁移之后创建了一些迁移。
迁移适用于:
行政。{nums}_logentry_add_action_flag_choices
授权。{nums}_alter_user_last_name_max_length
授权。{nums}_alter_group_name_max_length
auth.{nums}_update_proxy_permissions
member.{nums}_auto_YYYYMMDD_HHMM.py - (成员组上的变更经理)
在这一刻。我还没有通过管理页面登录。
而且我认为在此之后我做了更多的 Django 版本更改(可能再两次)。
只是因为我试图找出适合我的版本。
在 3.1 和 3.0 之间发生了所有这些变化之后,
我的 docker 与我的服务器和数据库不兼容,
并且出现了管理员注销问题。
所以我必须将我的 Django 倒回到 1.11。
当然,我上面提到的一些迁移,
必须再做一次。
所以我真的不记得在发现管理员注销问题之前我迁移了多少次。
无论如何,我想我在迁移过程中搞砸了一些事情。
我使用哪个版本的 Django 并不重要,
当我连接到数据库时,3.0.x ~ 3.1.x 都有相同的管理员注销问题。
只有当我切换回 Django 1.11 时,Admin 注销问题才会消失。
为什么我认为数据库已损坏?
因为我创建了一个具有 Django 3.0 的新 docker 映像。
我创建了一个全新的 MSSQL DB,同样的迁移,Django Admin 工作正常。
但是如果我使用相同的 docker 容器。连接到旧数据库,然后 Django Admin 开始出现注销问题。
一开始我确实认为这是Django的问题,我尝试了一些方法。但没有一个能解决问题。
我不记得所有这些,但例如:
https://groups.google.com/g/django-users/c/F9XCiLDbkbY?pli=1
我的管理员注销问题也有 302 状态码。 302 状态码,当我在管理员中浏览并注销时。 就像谷歌上的文章一样。
因为旧的数据库是客户的数据库,我不能告诉他们我损坏了他们的数据库,
并要求他们将所有数据移动到新创建的数据库中。
即使我可以要求客户这样做,我仍然不确定数据移动到新数据库后,
此管理员问题不会再次出现。
所以我想寻求帮助。
- 无论如何要重做数据库的所有迁移,但不会丢失数据?
- 有什么方法我还可以尝试吗?
解决方案
我的问题是一样的。我解决了 postgres 9.5 到 14 的更新版本。工作正常。
推荐阅读
- twitter-bootstrap - Bootstrap 4.1:使用 scrollspy 添加附加辅助侧边栏导航
- python - python中的牛顿法检查
- javascript - 动态显示和隐藏滚动条
- ssh - 如何向 Sftp 客户端(sshd-core、Mina 服务器)发送消息错误和错误状态
- sql - 两个 varchar datetime 之间的时间差
- java - 如何从固定数组中删除元素仅用于循环和附加数组
- serverless-framework - 如何在 Windows 中设置 SLS_DEBUG?
- amazon-web-services - 授权放大API
- gcc - 致命错误:_stdio.h:没有这样的文件或目录
- firebase - 大型节点的 Firebase 截断失败