【发布时间】:2017-06-17 10:28:37
【问题描述】:
我使用python manage.py makemigrations myApp 和python manage.py migrate myApp 命令在我的数据库中创建 Postgres 表。然后有人用 SQL 查询手动删除了它们。
我可以使用终端命令重新创建这些没有数据的表吗?
【问题讨论】:
标签: python sql django postgresql
我使用python manage.py makemigrations myApp 和python manage.py migrate myApp 命令在我的数据库中创建 Postgres 表。然后有人用 SQL 查询手动删除了它们。
我可以使用终端命令重新创建这些没有数据的表吗?
【问题讨论】:
标签: python sql django postgresql
这取决于。
他们是否删除了所有表格?如果是这样,那很容易。只需重新运行
manage.py migrate.
他们是否只删除了您通过迁移添加的新表? 还不错,进入 django_migrations 表,并删除从该表中创建已删除表的迁移的条目并重新运行
manage.py migrate.
当您运行 makemigrations 时,Django 会创建迁移文件,但不会对数据库进行任何操作。
当你运行 migrate 命令时,Django 在数据库上运行 alter table 命令并向 django_migrations 表添加一个条目,因此它知道哪些迁移已经完成,哪些还需要运行。
如果此人随机删除了一组与您的迁移不同步的表,那将是一团糟,并且需要进行大量手动工作以确保您的迁移和数据库表同步。
【讨论】: