因此,我在 Django 中创建了一个新模型,然后以正确的顺序执行 python manage.py makemigrations
和 python manage.py migrate
。但后来由于某种原因,我不小心在 PgAdmin 中删除了表(关系)(我知道这听起来很愚蠢)。所以我尝试删除迁移文件夹中的所有文件,但 init.py 文件。然后我再次运行上面的两个命令,但在 PgAdmin 中看不到表。
除了在 PgAdmin 中自己创建一个表之外,我还应该做什么?
提前致谢。
最佳答案
这不起作用,因为所有迁移的条目已经存储在名为 django_migrations
的表中。所以即使你运行 makemigrations
删除所有迁移文件后,不会创建新的迁移文件。因此,您可以通过以下三种方法来修复它。
一:删除DB(如果数据不重要)
删除数据库并创建一个新数据库。运行makemigrations
和migrate
命令。
二:手动创建该表
如果您已经删除了所有迁移文件,最好将其恢复。您可以使用 git 来执行此操作:git checkout /path/to/migration/folder
。然后您可以手动创建表。
三:从 django_migrations
删除条目
我假设您已删除所有迁移文件。所以这部分涵盖了整个项目。但@DenizKaplan 已经解释了更好的方法来做到这一点。
如果您没有使用 git,或者无法恢复这些文件,那么您可以按照以下步骤操作:
- 备份数据库
- 删除
djang_migrations
中的所有条目表 - 运行
./manage.py makemigrations
生成迁移文件 - 运行
./manage.py migrate <your lost app>
迁移您的应用程序(您在数据库中丢失的应用程序)。 - 运行
./manage.py migrate --fake
伪造其余的应用程序。
关于django - 关系不存在,在 PostgreSQL、Django 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61768150/