我在银行应用程序中添加了字段到我的模型,运行python manage.py schemamigration banks --auto,它生成了正确的迁移,但是在迁移之后,不知道为什么South从初始迁移开始 .
python manage.py migrate banks
Running migrations for banks:
- Migrating forwards to 0038_auto__add_field_offer_description.
> banks:0001_initial
FATAL ERROR - The following SQL query failed: CREATE TABLE `banks_lendingtarget` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(255) NOT NULL UNIQUE)
The error was: (1050, "Table 'banks_lendingtarget' already exists")
即使我使用指定的迁移名称开始迁移,例如:
python manage.py migrate banks 0038_auto__add_field_offer_description
有同样的错误,我的问题是:为什么?
我想最近添加的initial_data.json到我的应用程序可能会导致这一点,但重命名后它没有任何变化 . 有没有人有同样的情况?感谢帮助 .
1 回答
假设您使用的是南0.8左右和Django 1.6或以下:
我无法解释为什么在不了解您的数据库历史和南方使用情况的情况下发生这种情况,但为了帮助诊断问题,您可以手动检查数据库中的南迁移历史记录表 .
但是,无论您发现什么,补救措施都可能是相同的:您可以“伪造”迁移并跳到迁移历史记录中的正确位置 .
试试
python manage.py migrate banks 0037 --fake
. 这将带你到0038
迁移之前,而不是真正尝试创建表 . 当然,这假设0037
是成功应用于您的数据库的最新迁移 .