我在银行app中为我的模型添加了字段,运行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到我的应用程序可能会导致这种情况,但在重命名后它没有任何变化。有没有人有同样的情况?谢谢你的帮助。
答案 0 :(得分:2)
假设您使用的是South 0.8左右和Django 1.6或更低版本:
我无法在不了解您的数据库历史和南方使用情况的情况下解释原因,但为了帮助您诊断问题,您可以手动检查数据库中的南迁移历史记录表。
然而,无论你发现什么,补救措施都可能是相同的:你可以"假的"迁移并跳到迁移历史记录中的适当位置。
试试python manage.py migrate banks 0037 --fake
。这将使您在0038
迁移之前,而不实际尝试创建表。当然,这假设0037
是成功应用于数据库的最新迁移。