3

我刚刚遇到了一个问题,south似乎在两次迁移之间感到困惑。

最后 (4) 次迁移: 好久不见

我有一张桌子:

class VulnFuzz(models.Model):
    fuzzVector = models.CharField(max_length=200)
    FkToVulnTbl = models.ForeignKey(Vuln)

我想将该表更改为其他内容:

class VulnFizz(models.Model):
    fizzVector = models.CharField(max_length=200)
    FkToVulnTbl = models.ForeignKey(Vuln)

问题是,当我运行时:

python manage.py schemamigration Scanner --auto

它说然后迁移它,所以我使用:

python manage.py migrate Scanner

它说:

Migrating forwards to 0041_auto__del_field_vulnfizz_FkToVulnTbl.
 > Scanner:0032_auto__chg_field_vulnfuzz_FkToVulnTbl__del_index_vulnfuzz_FkToVulnTbl
FATAL ERROR - The following SQL query failed: DESCRIBE `Scanner_vulnfuzz`
The error was: (1146, "Table 'vulnawarefinal.scanner_vulnfuzz' doesn't exist")
 ! Error found during real run of migration! Aborting.

 ! Since you have a database that does not support running
 ! schema-altering statements in transactions, we have had 
 ! to leave it in an interim state between migrations.

! You *might* be able to recover with:   = CREATE INDEX `Scanner_vulnfuzz_30a95dc2` ON `Scanner_vulnfuzz` (`FkToVulnTbl_id`);

我已经尝试运行更改表之前的建议:

CREATE INDEX `Scanner_vulnfuzz_30a95dc2` ON `Scanner_vulnfuzz` (`FkToVulnTbl_id`)

但这并没有解决它。

我现在很茫然,我该如何解决这个问题?还是我应该重做整个数据库?

谢谢

4

1 回答 1

2

您处于迁移 31 并且想要迁移到 41。错误发生在迁移 32 中,因此问题不在于您当前描述的代码更改和相关的迁移 41。

迁移 32 期望 tableScanner_vulnfuzz存在,但事实并非如此。换句话说:您的数据库不是 South 期望的状态。

您可以通过迁移回创建表的迁移然后再次运行所有迁移来恢复。否则,您可能必须重新创建数据库并syncdb从头migrate开始再次运行。

于 2013-11-07T16:53:15.237 回答