我使用 Django 应用程序克隆了一个 git 存储库,并在 Pycharm 上打开它并对其进行了一些更改。
在这些更改中,我对 django 的 Group 类进行了
add_to_class
,添加了一个名为 modulo
的字段。
我关闭了这个项目并再次克隆了存储库,并进行了所有初始迁移等等。问题是,当我尝试
migrate
时,我收到此错误
django.db.migrations.exceptions.CircularDependencyError: BOXCFG.0001_initial, auth.0010_remove_group_modulo, auth.0009_group_modulo
似乎我对 Django 原生模型所做的更改仍然以某种方式妨碍了我的迁移。
我尝试删除所有内容,迁移历史记录,表迁移字段,数据库文件夹......但在尝试迁移时仍然收到此错误。
我该如何解决这个问题?我在哪里可以清除 Django 迁移,以便我可以重新开始,而无需在另一个项目中进行更改?
我刚刚解决了这个问题。对于面临同样问题的任何人,我所做的就是删除导致
django\contrib\auth\migrations
文件夹中出现错误的迁移。
也从 pycache 中删除了它们。
之后,我删除了数据库,再次在我的应用程序上执行了
makemigrations
,然后执行了 migrate
。看起来好像有效了。
嗨,WilsonPena 和大家。是的,你说得对。
发生这种情况是因为依赖项或第三方模块(如 Django auth)中存在过去的迁移,因此当您执行第一次迁移时,这些不再匹配,您必须删除导致问题的依赖项或第三方模块的所有迁移文件,了解哪些问题导致问题的一种方法是运行迁移(这显然会失败),然后输入创建的迁移文件并查看名为“依赖项”的数组中的依赖项名称,这些将是其中的依赖项您必须去删除他们所有的迁移文件。
无需太多研究(如果使用虚拟环境)并且无需手动查找迁移文件然后将其删除即可解决此问题的一种方法是:创建一个新的虚拟环境(如果使用虚拟环境)。
当然,在此之前您应该提取您使用 pip freeze 的依赖项的名称和版本,您可以使用“pip freeze > ~/Desktop/requirements.txt”,这将创建一个列出名称和版本的文件以便稍后在新的虚拟环境中运行“pip install -r ~/Desktop/requirements.txt”,从而再次安装所有内容,但采用全新安装。
模块或第三方依赖项的迁移文件将被删除,您将拥有清晰的路径来运行第一次迁移,而不会因它们而导致差异。
好好看!!!