Django 不一致迁移历史
Posted
技术标签:
【中文标题】Django 不一致迁移历史【英文标题】:Django InconsistentMigrationHistory 【发布时间】:2020-03-26 17:00:14 【问题描述】:我正在尝试设置一个 Django 项目并遇到以下错误:
WARNINGS:
?: (rest_framework.W001) You have specified a default PAGE_SIZE pagination rest_framework setting,without specifying also a DEFAULT_PAGINATION_CLASS.
HINT: The default for DEFAULT_PAGINATION_CLASS is None. In previous versions this was PageNumberPagination. If you wish to define PAGE_SIZE globally whilst defining pagination_class on a per-view basis you may silence this check.
Traceback (most recent call last):
File "manage.py", line 18, in <module>
execute_from_command_line(sys.argv)
File "/Users/george/.virtualenvs/mixapi/lib/python3.7/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
utility.execute()
File "/Users/george/.virtualenvs/mixapi/lib/python3.7/site-packages/django/core/management/__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/george/.virtualenvs/mixapi/lib/python3.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/george/.virtualenvs/mixapi/lib/python3.7/site-packages/django/core/management/base.py", line 335, in execute
output = self.handle(*args, **options)
File "/Users/george/.virtualenvs/mixapi/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 82, in handle
executor.loader.check_consistent_history(connection)
File "/Users/george/.virtualenvs/mixapi/lib/python3.7/site-packages/django/db/migrations/loader.py", line 291, in check_consistent_history
connection.alias,
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration events.0001_initial is applied before its dependency commons.0001_initial on database 'default'.
make: *** [migrate] Error 1
我在虚拟环境中运行它,并且有一个用于运行 postgres 数据库的 docker-compose 容器。不知道如何开始调试它或它为什么会发生。任何帮助将不胜感激
【问题讨论】:
你能分享 events.001_initial 和 commons.0001_initial 的依赖关系吗?这可能只是编辑其中一个的问题,这样您就不必为事件和公地单独运行迁移 @Gers Events 有dependencies = [ ("commons", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ]
,commons 有一个空的依赖数组。
我也不确定,但是您可以尝试在 commons 初始迁移文件中添加migrations.swappable_dependency(settings.AUTH_USER_MODEL)
或查看@Md 的问题。 Rakibul Islam 提到了***.com/questions/49957057/…
相关(如果不重复)问题:***.com/q/37627464/4744341
【参考方案1】:
在项目内的迁移文件夹中执行以下步骤:
删除 pycache 和 0001_initial 文件。
从根目录中删除 db.sqlite3(注意所有数据都会消失)。 在终端运行:
python manage.py makemigrations
python manage.py migrate
注意:不要忘记备份您的数据。
更多详情可以关注link
【讨论】:
【参考方案2】:根据您的快照:
您需要运行命令:- python manage.py migrate commons
然后迁移事件模型。
【讨论】:
这仍然会导致相同的错误。出于某种原因,events.0001_initial 一直在公共场所之前被应用 @irmaz 首先从数据库中删除 django_migrations 表,然后再次运行命令。因为此表包含有关您已在数据库中运行的迁移文件的信息。以上是关于Django 不一致迁移历史的主要内容,如果未能解决你的问题,请参考以下文章