django 1.7如何使用现有表进行迁移

时间:2015-01-07 08:13:11

标签: python django django-1.7

我升级到django 1.7 并需要处理迁移

我的数据库已经存在表

这是我的步骤:

1.我删除了django app migration中的test 2.我在django settings.py中删除南(从安装的APPS) 3.run python manage.py makemigrations test

  Migrations for 'test':
    0001_initial.py:
      - Create model Person
      - Create model Book
      - Create model Artical
  1. 运行python manage.py migrate test

    执行的操作:
        应用所有迁移:测试
      正在运行的迁移:
        应用test.0001_initial ... FAKED

  2. 是对的吗? 如果我已经有桌子,如何进行迁移? 请指导我谢谢

2 个答案:

答案 0 :(得分:0)

如果您的数据库中存在的表与您当前的模型具有相同的结构(即在您最后一次使用South迁移后尚未修改models.py文件),这是正确的。如果是这样的话,你可以毫无后顾之忧地继续前进。

如果结构 不同,您可以尝试不同的方法:

  • 手动创建所需的迁移。您必须使用所需的修改编写自己的迁移。 Here您可以找到一些迁移文件的示例代码,用于更改或添加字段,here您可以完全参考可以调用的方法

  • 使用phpmyadmin,raw sql或您喜欢的方法手动修改数据库。

  • 执行python manage.py dumpdata app1 app2 app3 > data.json,删除数据库,再次创建数据库并python manage.py loaddata data.json。这可能会引发一些错误,因为您保存的数据是旧结构,您将不得不处理每个错误。

  • 或者最不喜欢的,如果您不需要数据,只需删除数据库并重新创建它。

答案 1 :(得分:0)

你这样做的方式没有错。

伪造第一次迁移的原因是因为您的表已经创建:

  

运行python manage.py migrate。 Django将会看到表格   初始迁移已经存在,并将它们标记为不应用   运行它们。

来自documentation on upgrading from South