【问题标题】:How to recover South from flushing db如何从刷新数据库中恢复 South
【发布时间】:2012-01-07 18:49:51
【问题描述】:

我将一些数据批量加载到我的 Postgresql 数据库中,结果发现这一切都有些错误。为了解决这个问题,我刷新了数据库以重新加载正确的数据。

重新加载数据,我对模型进行了更改并应用了正常的./manage.py schemamigration app --auto,然后是./manage.py migrate app(到目前为止一直在工作)。

此时我开始收到错误:

django.db.utils.DatabaseError: relation "app_model" already exists

而且回溯似乎正在调用初始迁移文件 001。所以我认为答案是这样做:

./manage.py migrate app 0005 --fake

我要应用的当前迁移是 0006(即这是迁移开始失败的地方),然后 postgres 中的南数据库应该回到我愚蠢地刷新它之前的位置。此时我应该能够

./manage.py migrate app

有人能告诉我这种方法是正确的吗?或者如果不是,正确的做法是什么?

【问题讨论】:

  • 很难确定,但从您的描述看来,您采取了正确的方法。可以肯定的是,您可以创建数据库架构的副本并首先对其进行测试吗?
  • 您也可以尝试创建一个新数据库(+在 settings.py 中更改数据库名称)并运行 syncdb + migrate
  • @StephenEmslie,这正是我需要的建议,我走在正确的轨道上,能够创建一个“一次性”数据库并按照指定测试迁移非常有帮助,谢谢!

标签: django postgresql django-south


【解决方案1】:

python manage.py migrate app --fake之后 做一个python manage.py schemamigration app --auto 然后做一个python manage.py migrate app

【讨论】:

    【解决方案2】:

    你也可以让它更通用:

    python manage.py migrate
    python manage.py flush
    python manage.py migrate --fake
    

    这将在冲洗后恢复所有南方历史

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      相关资源
      最近更新 更多