Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何修复迁移错误I';我要去南方?_Django_View_Model_Foreign Keys_Django South - Fatal编程技术网

Django 如何修复迁移错误I';我要去南方?

Django 如何修复迁移错误I';我要去南方?,django,view,model,foreign-keys,django-south,Django,View,Model,Foreign Keys,Django South,我试图将下面模型中的一个字段从CharField更改为ForeignKey,但在运行迁移时出错。我得到的错误是: 致命错误-以下SQL查询失败:在“reserve\u reviewbackup”(“用户id”)上创建索引“reserve\u reviewbackup\u fbfc09f1”; 错误是:索引保留\u reviewbackup\u fbfc09f1已存在 ! 在迁移的实际运行期间发现错误!流产 !!因为您的数据库不支持运行 ! 在事务中改变模式的语句,我们有 ! 使其在迁移之间处于过

我试图将下面模型中的一个字段从CharField更改为ForeignKey,但在运行迁移时出错。我得到的错误是:

致命错误-以下SQL查询失败:在“reserve\u reviewbackup”(“用户id”)上创建索引“reserve\u reviewbackup\u fbfc09f1”; 错误是:索引保留\u reviewbackup\u fbfc09f1已存在 ! 在迁移的实际运行期间发现错误!流产

!!因为您的数据库不支持运行 ! 在事务中改变模式的语句,我们有 ! 使其在迁移之间处于过渡状态

class Reviewbackup(models.Model):
    review = models.CharField('Review', max_length = 2000)
    user = models.CharField('Username', max_length =  200)
    rating = models.IntegerField(max_length=2, choices=RATING_OPTIONS)
    product = models.ForeignKey(Productbackup)
    def __unicode__(self):
        return self.review

user = models.ForeignKey(User, related_name='reviews')

我以前做过这个。只要从数据库管理员手动删除索引,一切都会正常工作。

我以前做过。只需从数据库管理员手动删除索引,一切正常。

在执行相同版本时(将字段类型从CharField更改为ForeignKey,而不更改其名称)也会出现同样的错误,这听起来像是一个bug。(south 0.7.6)为了使用south完成所描述的更改,我使用了两个步骤:1)第一次迁移,在这里我更改了字段的类型和名称(名称设置为临时值);2)第二次迁移,在这里我将字段的名称更改回原始名称(临时名称已放弃)。当然,South已经修复了我的Sqlite数据库。。。让我们把这作为一个很好的教训,在迁移之前总是转储所有DB内容:
python manage.py dumpdata>savemyass.json
您能在更改前后编写代码吗?在执行相同的版本时(将字段类型从CharField更改为ForeignKey,而不更改其名称),对我来说听起来像个bug。(south 0.7.6)为了使用south完成所描述的更改,我使用了两个步骤:1)第一次迁移,在这里我更改了字段的类型和名称(名称设置为临时值);2)第二次迁移,在这里我将字段的名称更改回原始名称(临时名称已放弃)。当然,South已经修复了我的Sqlite数据库。。。让我们将此作为迁移之前始终转储所有DB内容的重要经验:
python manage.py dumpdata>savemyass.json
您能在更改之前和之后编写代码吗?