Django 1.7 - 意外删除了一个表,如何恢复?
我在一个Django 1.7的项目中不小心删除了一个表。然后我运行了 makemigrations
和 migrate
这两个命令,但它们都没有发现这个表已经被删除,所以没有任何效果。
我是不是应该先把这个模型的代码删掉,然后再做迁移,再把模型的代码加回来,再次迁移?还是说有更好的方法来恢复它呢?
1 个回答
20
试试这个:
python manage.py sqlmigrate app_name 0001 | python manage.py dbshell
这个命令会把最初的应用迁移的输出结果传送到数据库命令行工具(dbshell),然后执行它。如果你想对发生的事情有更多的控制,可以把这个过程分成两步,手动复制粘贴SQL命令。
通常情况下,迁移操作会把所有应用表放在一个事务中,所以如果只是缺少了一个表(在一个多模型的应用中),你需要手动选择你想要重新创建的那个表。