我使用python manage.py makemigrations myApp
和python manage.py migrate myApp
命令在我的数据库中创建Postgres表。然后有人用SQL查询手动删除它们。
我可以使用终端命令重新创建这些没有数据的表吗?
答案 0 :(得分:2)
这取决于。
他们删除了所有表吗?如果这样那很容易。只需重新运行
manage.py migrate.
他们是否只删除了您通过迁移添加的新表? 还不错,进入django_migrations表,删除从该表创建已删除表的迁移条目,然后重新运行
manage.py migrate.
当您运行makemigrations时,Django会创建迁移文件,但在触摸数据库时不会对其执行任何操作。
当您运行migrate命令时,Django会在数据库上运行alter table命令并在django_migrations表中添加一个条目,因此它知道哪些迁移已完成,哪些仍需要运行。
如果此人删除了一组与您的迁移不同步的随机表,那么它将变得一团糟,并且将涉及大量手动工作以确保您的迁移和数据库表保持同步。