当我尝试从 Django 的内置身份验证应用程序中删除用户时,出现以下错误: django.db.utils.OperationalError: no such table: main.auth_user__old
我在网上搜索,发现了这个问题:Django - No such table: main.auth_user__old所以我更新了 Django,现在使用的是 3.2.4 版本(我使用的是 sqlite)。然后我尝试从数据库中删除身份验证表,但是当我执行 a 时ptyhon manage.py makemigrations auth
,它告诉我没有检测到任何更改。另外,我无法删除整个数据库。
有人知道我能做些什么来解决这个问题吗?
使用 Django 时不应手动删除表。Django 将一个额外的表添加到名为的数据库中,django_migrations
并且在该表中 Django 跟踪应用了哪些迁移。当您手动删除内容时,它们的条目仍保留在此表中,因此您发现自己无法应用迁移。
做你想做的最简单的方法是通过指定迁移名称迁移到以前的迁移来反转迁移:
python manage.py [app_label] [migration_name]
您可以使用zero
asmigration_name
来反转所有迁移。如果假设您已经手动更改了内容,则可以使用该--fake
标志来伪造迁移(这将简单地将迁移标记/取消标记为已应用)。考虑到您已经删除了表,您可以使用以下命令:
python manage.py migrate auth zero --fake
有关该migrate
命令的更多信息,您可以阅读文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句