我改变了我的模型
class HardwareModel(models.Model):
name = models.CharField(max_length=128,unique=True)
series =models.CharField(max_length=128)
def __unicode__(self):
return "%s" % (self.name)
到
class HardwareModel(models.Model):
name = models.CharField(max_length=128,unique=True)
series = models.ForeignKey(HardwareModelSeries, blank=True)
def __unicode__(self):
return "%s" % (self.name)
我用南方迁移。(使用 --auto 所以迁移脚本是由南制作的)
# Renaming column for 'HardwareModel.series' to match new field type.
db.rename_column('iamictinfra_hardwaremodel', 'series', 'series_id')
# Changing field 'HardwareModel.series'
db.alter_column('iamictinfra_hardwaremodel', 'series_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['iamictinfra.HardwareModelSeries']))
# Adding index on 'HardwareModel', fields ['series']
db.create_index('iamictinfra_hardwaremodel', ['series_id'])
现在在创建一个全新的 sqllite 数据库时(在测试期间),它给出了这个错误:
south DEBUG execute "CREATE INDEX "iamictinfra_hardwaremodel_b18a98d" ON "iamictinfra_hardwaremodel" ("series_id");" with params "[]"
FATAL ERROR - The following SQL query failed: CREATE INDEX "iamictinfra_hardwaremodel_b18a98d" ON "iamictinfra_hardwaremodel" ("series_id");
The error was: index iamictinfra_hardwaremodel_b18a98d already exists
现在我可以删除创建索引命令,但我不确定它是否可以在生产服务器(mySql)上运行。
另一种选择可能是更改脚本并删除列,并使其而不是更改它......但是,我还有很多迁移......我认为在旧迁移中搞砸有点棘手...... ..我试图用try catch来捕捉它......
也可能是该脚本是使用较旧的南方版本制作的......并且在较新的版本中,索引也在更改列时被重命名......而在旧版本中它不是......
我正在使用南 0.7.6(当前最新)。
有什么建议么?