如何使用旧数据库运行新的django代码?

时间:2015-01-28 09:36:03

标签: python django django-migrations

如果问题的名称具有误导性,我很抱歉,但这是交易。

我转储了旧版django app(django< 1.7)使用的数据库。

我有一个使用django 1.7的新版代码。现在我需要在保存所有数据的同时使用新代码升级某些服务器。

我认为它会起作用:

恢复数据库,使用./manage.py migrate运行新迁移(1.7迁移)。

完成!

但是当我正在运行迁移时,我已经"关系已经存在错误"。

我知道发生这种情况可能是因为数据库与迁移历史记录不同步......但我不知道该怎么做。

EDIT1我觉得唯一的方法是手动创建迁移脚本或其他东西,因为现在有办法将数据库与新的迁移同步。

假设有一个名为TABLE的数据库中的表和两个C1和C2列。

现在,当我从1.6迁移到1.7时,我已经添加了C3列。因此,初始迁移看起来像这样"使用COLUMNS C1,C2,C3和#34创建表TABLE。

当我尝试使用旧数据库进行迁移时,这样做是不可能的。

1 个答案:

答案 0 :(得分:0)

  1. 删除新列。
  2. 创建初始迁移。
  3. 假冒所有应用的初始迁移:

    python manage.py migrate --fake yourappnamehere 0001
    
  4. 添加列,创建新的迁移。
  5. 执行新的迁移。