【发布时间】:2020-05-23 21:39:42
【问题描述】:
我正在尝试在 PythonAnywhere 上部署我的应用程序,当我去应用迁移时,我收到一个错误,指出迁移依赖项不存在。
我已经通过从迁移文件夹中删除迁移、删除数据库并重新创建它并运行 makemigrations 来完全重置迁移。
我现在只有一个初始迁移,一切都在我的本地机器上运行。
工作流程是这样的:
1 - 将我正在使用的当前版本克隆到 PythonAnywhere。 2 - 运行 ./manage migrate 来初始化数据库(第一次)并得到错误:
(rwe) 17:00 ~/rwe (develop)$ ./manage.py migrate
asyncio DEBUG Using selector: EpollSelector
Traceback (most recent call last):
File "./manage.py", line 21, in <module>
main()
File "./manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 86, in handle
executor = MigrationExecutor(connection, self.migration_progress_callback)
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/db/migrations/executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/db/migrations/loader.py", line 49, in __init__
self.build_graph()
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/db/migrations/loader.py", line 274, in build_graph
raise exc
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/db/migrations/loader.py", line 248, in build_graph
self.graph.validate_consistency()
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/db/migrations/graph.py", line 195, in validate_consistency
[n.raise_error() for n in self.node_map.values() if isinstance(n, DummyNode)]
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/db/migrations/graph.py", line 195, in <listcomp>
[n.raise_error() for n in self.node_map.values() if isinstance(n, DummyNode)]
File "/home/IAMCB/.virtualenvs/rwe-Cn2YEGYr/lib/python3.7/site-packages/django/db/migrations/graph.py", line 58, in raise_error
raise NodeNotFoundError(self.error_message, self.key, origin=self.origin)
django.db.migrations.exceptions.NodeNotFoundError: Migration backend.0001_initial dependencies reference nonexistent parent node ('auth', '0013_delete_users')
(rwe) 17:12 ~/rwe (develop)$
网站加载,我可以浏览等等。考虑到初始迁移尚未应用,我无法使用任何依赖数据库的东西。
系统之间唯一真正的变化是生产环境的密钥不同,并且 DEBUG=False
【问题讨论】:
-
您的迁移显然缺少一些文件。也许
auth/migrations/0013_delete_users.py没有添加到存储库中。 -
据我所知,'auth' 指的是我的设置文件中的 django.contrib.auth,我只有 2 个应用程序,它们都不是 'auth'
-
是的,
auth指的是django.contrib.auth,它是您的 django 项目中的一个应用程序,只是它不是“你的”,因为它是 django 本身的一部分。您仍然需要为其生成迁移。 -
好的,我的本地机器上的 django.contrib.auth 迁移到 0013,但是迁移只到 python 任何地方开发服务器上的 0011?!?我该如何解决这个问题,是否不应该使用版本控制来跟踪迁移?并运行 ./manage makemigration 会导致同样的错误。
标签: django django-migrations pythonanywhere