首页 > 解决方案 > 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

Django开发服务器不断注销

我的管理员注销问题也有 302 状态码。 302 状态码,当我在管理员中浏览并注销时。 就像谷歌上的文章一样。

因为旧的数据库是客户的数据库,我不能告诉他们我损坏了他们的数据库,

并要求他们将所有数据移动到新创建的数据库中。

即使我可以要求客户这样做,我仍然不确定数据移动到新数据库后,

此管理员问题不会再次出现。

所以我想寻求帮助。

  1. 无论如何要重做数据库的所有迁移,但不会丢失数据?
  2. 有什么方法我还可以尝试吗?

标签: pythonsql-serverdjango

解决方案


我的问题是一样的。我解决了 postgres 9.5 到 14 的更新版本。工作正常。


推荐阅读