无法摆脱django 1.11中“不存在的父节点”

时间:2017-07-16 01:46:51

标签: django python-3.x django-models virtualenv django-migrations

到目前为止,我已经尝试过互联网在这个问题上给我的任何东西,但我还是没有解决它。

Python 3.6.1 - django 1.11.2 - virtualenv
我有一个包含两个应用accountapp2的django项目。最近,随着项目的不断发展,我决定将它们分成更合适的应用程序。现在我总共有8个应用account分为user_authuser,然后我删除了account。为了整理它,我将所有应用程序从根文件夹移动到/apps/

到目前为止,user, user_auth, app2仅在app2未被使用的情况下使用*.pyc 每个单独文件中的代码被拆分,移动到指定的应用程序并重新编码以从正确的路径导入。

为了重新开始,我删除了db.sqlite3文件,删除了所有__pycache__个文件,删除了所有migrations个文件夹并清空了__init__.py个文件夹,确保保留所有python manage.py migrate个文件夹1}}文件。

通过virtualenv运行Traceback (most recent call last): File "manage.py", line 22, in <module> execute_from_command_line(sys.argv) File "H:\Programming\VirProjDir\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line utility.execute() File "H:\Programming\VirProjDir\lib\site-packages\django\core\management\__init__.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "H:\Programming\VirProjDir\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "H:\Programming\VirProjDir\lib\site-packages\django\core\management\base.py", line 330, in execute output = self.handle(*args, **options) File "H:\Programming\VirProjDir\lib\site-packages\django\core\management\commands\migrate.py", line 83, in handle executor = MigrationExecutor(connection, self.migration_progress_callback) File "H:\Programming\VirProjDir\lib\site-packages\django\db\migrations\executor.py", line 20, in __init__ self.loader = MigrationLoader(self.connection) File "H:\Programming\VirProjDir\lib\site-packages\django\db\migrations\loader.py", line 52, in __init__ self.build_graph() File "H:\Programming\VirProjDir\lib\site-packages\django\db\migrations\loader.py", line 274, in build_graph raise exc File "H:\Programming\VirProjDir\lib\site-packages\django\db\migrations\loader.py", line 244, in build_graph self.graph.validate_consistency() File "H:\Programming\VirProjDir\lib\site-packages\django\db\migrations\graph.py", line 261, in validate_consistency [n.raise_error() for n in self.node_map.values() if isinstance(n, DummyNode)] File "H:\Programming\VirProjDir\lib\site-packages\django\db\migrations\graph.py", line 261, in <listcomp> [n.raise_error() for n in self.node_map.values() if isinstance(n, DummyNode)] File "H:\Programming\VirProjDir\lib\site-packages\django\db\migrations\graph.py", line 104, in raise_error raise NodeNotFoundError(self.error_message, self.key, origin=self.origin) django.db.migrations.exceptions.NodeNotFoundError: Migration auth.0009_user_following dependencies reference nonexistent parent node ('account', '0002_contact') 给我这个输出:

python manage.py migrate
python manage.py makemigrations
python manage.py makemigrations <app_name>
python manage.py flush
python manage.py --fake
python manage.py --fake <app_name> zero
etc..

到目前为止,我对这些命令没有运气,确保删除其中的所有缓存和* .pyc文件:

('account', '0002_contact')

即使我删除了与我的代码没有直接关系的任何内容,我也不明白account一直出现的原因。 “包含文本” - 搜索显示没有from distutils.core import setup, Extension setup(name='init', version='1.0', ext_modules=[Extension('testemeu',['main.cpp'],include_dirs=[r"C:\Users\v\Documents\code\C\sml\SFML-2.4.2\include"],library_dirs = [r"C:\Users\v\Documents\code\C\sml\SFML-2.4.2\lib"])]) 这样的事情。

知道下一步该去哪儿?

3 个答案:

答案 0 :(得分:0)

显然django将迁移文件保存在自己的模块文件夹中。这就是我所做的:

  1. pip uninstall django
  2. /Lib/site-packages,删除了django文件夹。
  3. 删除了项目中的所有*.pyc个文件。
  4. 删除了项目中的所有__pycache__个文件夹。
  5. 清除项目中的所有migrations个文件夹(保留__init__.py)。
  6. pip install django==x.x.x
  7. python manage.py migrate
  8. python manage.py makemigrations <app_name>
  9. python manage.py migrate
  10. python manage.py runserver
  11. 庆祝。

答案 1 :(得分:0)

这不是原始海报的问题。但是,当我遇到类似的错误时,这就是我解决的方法。

就我而言,我在依赖模块名称中有.py扩展名,如下所示:

dependencies = [
    ('dashboard', '0003_auto_20181024_0603.py'),
    ('auth', '__latest__'),
    ('contenttypes', '__latest__'),
]

我删除了.py,将其更改为此

    ('dashboard', '0003_auto_20181024_0603')

答案 2 :(得分:0)

我最近遇到了一个与您类似的问题,希望这可以为您找到解决方案提供一些指导。

我的问题仅发生在我的生产环境中。

为什么?我会解释。

我们使用git进行版本控制,而当我在本地进行开发工作时,我以某种方式将app/migrations/0009.py文件包含到.gitignore文件中。

长话短说,我将更改推送到远程服务器并继续进行应用迁移,但是会不断遇到您所描述的问题。

在摆弄了manage.py以及所有无意间没有提供任何解决方案的迁移命令之后,我想起我并没有想过是否查看缺少的依赖文件。

解决方案:
我通过在Django项目文件夹中的Shell中运行此命令来检查产品环境中是否存在依赖文件。

$ ls app/migration

这表明所需的依赖文件不存在。

那是我决定检查本地.gitignore文件并删除行app/migrations/0009.py

的时候

我提交了本地更改并推送到产品服务器。然后,通过运行此命令,确认生产的服务器上已存在所需的文件。

$ ls app/migration

我跑了

$ ./manage.py check

-而这次问题已经消失了。

总而言之,请检查以确保所需的依赖项文件确实存在。