django - 关系不存在,在 PostgreSQL、Django 中

标签 django postgresql pgadmin

因此,我在 Django 中创建了一个新模型,然后以正确的顺序执行 python manage.py makemigrationspython manage.py migrate 。但后来由于某种原因,我不小心在 PgAdmin 中删除了表(关系)(我知道这听起来很愚蠢)。所以我尝试删除迁移文件夹中的所有文件,但 init.py 文件。然后我再次运行上面的两个命令,但在 PgAdmin 中看不到表。
除了在 PgAdmin 中自己创建一个表之外,我还应该做什么?

提前致谢。

最佳答案

这不起作用,因为所有迁移的条目已经存储在名为 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伪造其余的应用程序。

关于django - 关系不存在,在 PostgreSQL、Django 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61768150/

相关文章:

python - 为什么我在 Django 中收到表单无效错误?

SQL Upsert 语句不适用于非索引列

sql - 在postgresql中将float解析为int

sql - postgres 中的聚合函数中的 DISTINCT ON

postgresql - 错误 :syntax error at or near "%" in postgresql

postgresql - postgres pgagent 作业状态

postgresql - 从查询结果创建插入脚本

python - 在 django cms 中以多种语言提供页面的最佳方法

python - 如何将 2 个 Django 查询集合并为一个并创建一个 SELECT DISTINCT

django - 无法使用 Django 和 mongoDB 运行 syncdb