【问题标题】:Django 1.7 - Accidentally Dropped One Table. How To Recover It?Django 1.7 - 不小心丢了一张桌子。如何恢复它?
【发布时间】:2014-11-01 17:32:42
【问题描述】:

我不小心在 Django 1.7 项目中删除了一个表。我跑了makemigrations & migrate。这两个命令都没有识别出该表已删除。所以他们没有影响。

我应该删除模型的代码、进行迁移、添加模型的代码并再次迁移吗?或者有没有更好的恢复方法?

【问题讨论】:

  • 我可能会使用django-admin sql 命令并手动重新创建表,但您是否尝试使用migrate 回到创建该表之前的版本,然后再次迁移到最新版本?另请参阅--fake 切换到migrate,但我不知道它在这里是否有用。
  • 除非您有备份或固定装置,否则很抱歉您的数据已丢失。您可以恢复数据库表,但不能恢复内容。

标签: python django database-migration django-1.7


【解决方案1】:

试试这个:

python manage.py sqlmigrate app_name 0001 | python manage.py dbshell

它将初始应用迁移的输出通过管道传输到执行它的 dbshel​​l。如果您想更好地控制正在发生的事情,请将其分成两步并复制/粘贴 SQL 命令。

当然,迁移包含所有应用程序表的单个事务,因此如果仅缺少一个表(来自多模型应用程序),您必须手动选择仅要重新创建的表。

【讨论】:

  • 好老的 syncdb 过去在处理这样的场景方面要好得多。
  • 这很有帮助!
猜你喜欢
  • 2017-06-04
  • 1970-01-01
  • 2011-11-17
  • 2010-11-26
  • 2017-08-21
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多