django 1.7 如何迁移现有表
django 1.7 how to migration with existed tables
我升级到django 1.7
并且需要处理迁移
我的数据库已经存在表
这是我的步骤:
1.I 删除 django 应用中的 migration
test
2.I 在 django settings.py
中删除南方(从已安装的应用程序)
3.run python manage.py makemigrations test
Migrations for 'test':
0001_initial.py:
- Create model Person
- Create model Book
- Create model Artical
运行python manage.py migrate test
要执行的操作:
应用所有迁移:test
运行迁移:
正在应用测试。0001_initial...伪造
对吗???
如果我已经有表,如何进行迁移?
请指导我谢谢
如果您的数据库中存在的表与您当前的模型具有相同的结构(即您在上次使用 South 进行迁移后没有修改 models.py 文件),那是正确的。如果是这样,您可以放心地进行。
如果结构不同,您可以尝试不同的方法:
手动创建所需的迁移。您将不得不编写自己的迁移并进行必要的修改。 Here you can find some example code of a migrations file for altering or adding fields and here您拥有可以调用的方法的完整参考
使用 phpmyadmin、raw sql 或您喜欢的方法手动修改数据库。
做一个 python manage.py dumpdata app1 app2 app3 > data.json
,删除数据库,重新创建一个 python manage.py loaddata data.json
。这可能会引发一些错误,因为您保存的数据是旧结构,您将不得不处理每个错误。
或者最不喜欢的,如果不需要你的数据,只需删除数据库并重新创建它。
你这样做没有错。
第一次迁移被伪造的原因是因为您的表已经创建:
Run python manage.py migrate. Django will see that the tables for the
initial migrations already exist and mark them as applied without
running them.
我升级到django 1.7 并且需要处理迁移
我的数据库已经存在表
这是我的步骤:
1.I 删除 django 应用中的 migration
test
2.I 在 django settings.py
中删除南方(从已安装的应用程序)
3.run python manage.py makemigrations test
Migrations for 'test':
0001_initial.py:
- Create model Person
- Create model Book
- Create model Artical
运行
python manage.py migrate test
要执行的操作:
应用所有迁移:test
运行迁移:
正在应用测试。0001_initial...伪造
对吗???
如果我已经有表,如何进行迁移?
请指导我谢谢
如果您的数据库中存在的表与您当前的模型具有相同的结构(即您在上次使用 South 进行迁移后没有修改 models.py 文件),那是正确的。如果是这样,您可以放心地进行。
如果结构不同,您可以尝试不同的方法:
手动创建所需的迁移。您将不得不编写自己的迁移并进行必要的修改。 Here you can find some example code of a migrations file for altering or adding fields and here您拥有可以调用的方法的完整参考
使用 phpmyadmin、raw sql 或您喜欢的方法手动修改数据库。
做一个
python manage.py dumpdata app1 app2 app3 > data.json
,删除数据库,重新创建一个python manage.py loaddata data.json
。这可能会引发一些错误,因为您保存的数据是旧结构,您将不得不处理每个错误。或者最不喜欢的,如果不需要你的数据,只需删除数据库并重新创建它。
你这样做没有错。
第一次迁移被伪造的原因是因为您的表已经创建:
Run python manage.py migrate. Django will see that the tables for the initial migrations already exist and mark them as applied without running them.