我在银行应用程序中的模型中添加了字段,运行 python manage.py schemamigrationbanks --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 可能会导致此问题,但重命名后没有任何变化。你们有人有同样的情况吗?感谢您的帮助。
最佳答案
假设您使用的是 South 0.8 左右以及 Django 1.6 或更低版本:
如果不了解有关数据库历史记录和 South 使用情况的更多信息,我无法解释为什么会发生这种情况,但为了帮助诊断问题,您可以手动检查数据库中的 South 迁移历史表。
但是,无论您发现什么,补救措施可能都是相同的:您可以“伪造”迁移并跳到迁移历史记录中的正确位置。
尝试python manage.py migratebanks 0037 --fake
。这将带您进入 0038
迁移之前,而无需实际尝试创建表。当然,这假设 0037
是成功应用于您的数据库的最新迁移。
关于python - 迁移后的 Django South 迁移从初始开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515430/