gpt4 book ai didi

django - 重置 Django 迁移 : relation "django_migrations" does not exist

转载 作者:行者123 更新时间:2023-11-29 13:53:22 24 4
gpt4 key购买 nike

在为新项目创建数据库时,我以某种方式搞砸了我的迁移。我现在遇到不适用的迁移问题:

Operations to perform:
Apply all migrations: wagtailusers, wagtailembeds, wagtailadmin, sessions, admin, wagtailcore, auth, contenttypes, wagtaildocs, taggit, wagtailsearch, home, wagtailforms, wagtailredirects, wagtailimages
Running migrations:
No migrations to apply.

基于 this answer (和其他一些),看来我最好的选择是清除 django_migrations 中的内容 table 。所以我跑了:

DELETE FROM django_migrations WHERE app='wagtailusers';

得到错误:

ERROR:  relation "django_migrations" does not exist

django_migrations怎么可能不存在呢?我究竟做错了什么?我基本上想清除数据库中的所有内容和所有迁移并从头开始,但它显然比我想象的要复杂得多。 (有没有更简单的方法来基本上从数据库和迁移开始?)

编辑:

我尝试还原一个应用程序并将其再次向前迁移。

我跑了 ./manage.py showmigrations wagtailusers ,它显示了所有已应用的迁移:

wagtailusers
[X] 0001_initial
[X] 0002_add_verbose_name_on_userprofile
[X] 0003_add_verbose_names
[X] 0004_capitalizeverbose

然后我使用 ./manage.py migrate wagtailusers zero 取消应用所有迁移:

Operations to perform:
Unapply all migrations: wagtailusers
Running migrations:
Rendering model states... DONE
Unapplying wagtailusers.0004_capitalizeverbose... OK
Unapplying wagtailusers.0003_add_verbose_names... OK
Unapplying wagtailusers.0002_add_verbose_name_on_userprofile... OK
Unapplying wagtailusers.0001_initial... OK

showmigrations然后显示它们都未应用。所以我然后用 ./manage.py migrate wagtailusers 重新应用迁移:

Operations to perform:
Apply all migrations: wagtailusers
Running migrations:
Rendering model states... DONE
Applying wagtailusers.0001_initial... OK
Applying wagtailusers.0002_add_verbose_name_on_userprofile... OK
Applying wagtailusers.0003_add_verbose_names... OK
Applying wagtailusers.0004_capitalizeverbose... OK

一切都在 showmigrations 中检查.但是当我再次运行 migrate 时,它​​似乎仍然认为缺少什么?

Operations to perform:
Apply all migrations: wagtailusers
Running migrations:
No migrations to apply.

最佳答案

如果我没看错,我认为只是输出令人困惑?你的脚步似乎是

  • 运行 manage.py migrate 成功了
  • 运行 manage.py migrate wagtailusers zero 也有效
  • 运行 manage.py migrate wagtailusers 成功了
  • 运行 manage.py migrate 显示 No migrations to apply

如果这是事件的确切顺序并且我理解正确,那么是的,这实际上就是您想要 manage.py 说的。迁移引擎需要一点时间来查看是否有任何迁移,并且它必须计算相当数量的状态,以便它可以确定是否存在应该创建但不存在的迁移。如果你想仔细检查这个,那么 manage.py showmigrations 应该显示你所有现有的迁移,在它们前面有一个 [x],从而表明它们已经被应用。

希望我已经正确理解了你的问题。

关于django - 重置 Django 迁移 : relation "django_migrations" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36777653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com