在PostgreSQL、Django中,关系不存在。

问题描述 投票:0回答:2

所以我在Django中创建了一个新的模型,然后执行了两个python的 manage.py makemigrationspython manage.py migrate 顺序正确。但后来由于某些原因,我不小心把PgAdmin中的表(关系)掉了(我知道这听起来很傻)。所以我试着删除了迁移文件夹中的所有文件,但是这个 启动.py文件。然后我又运行了上面两个命令,但是在PgAdmin中看不到表。 除了自己在PgAdmin中创建一个表外,我应该怎么做? 先谢谢大家了。

django postgresql pgadmin
2个回答
1
投票

这就不行了,因为所有迁移的条目都已经存储在一个名为 django_migrations. 所以,即使你运行 makemigrations 删除了所有的迁移文件后,却无法新建一个文件。所以这里有三个方法可以解决。

一:删除DB(如果数据不重要)

删除数据库并创建一个新的数据库。运行 makemigrationsmigrate 命令。

二:手动创建该表

如果你已经删除了所有的迁移文件,你最好恢复它们。你可以用git来恢复。git checkout /path/to/migration/folder. 然后你可以手动创建表格。

三是 从表中删除条目 django_migrations

我以为你已经删除了所有的迁移文件。所以这部分涵盖了整个项目。但@DenizKaplan已经解释了更好的方法来做到这一点。

如果你没有使用git,或者没有办法恢复这些文件,那么你可以按照以下步骤进行。

  1. 备份你的数据库
  2. 删除所有条目 djang_migrations 桌子
  3. 运转 ./manage.py makemigrations 生成迁移文件
  4. 运转 ./manage.py migrate <your lost app> 迁移您的应用程序(您在数据库中丢失的应用程序)。
  5. 运行 ./manage.py migrate --fake 来伪造其余的应用程序。

1
投票

有一些步骤你需要检查。如果你在 makemigrations 操作,您可能需要检查 django_migrations 表来删除与你正在使用的应用程序相关的行。如果这样做没有帮助,你需要检查INSTALLED_APPS,也许你会不小心删除应用程序。如果这些都不行,请提供一些详细的错误信息。

© www.soinside.com 2019 - 2024. All rights reserved.