django南迁移错误关系" photo_photo"已经存在

时间:2015-02-26 06:02:00

标签: python django django-south

我正在使用Django South。我正在遵循http://south.readthedocs.org/en/latest/tutorial/part1.html

的教程

首先,我想提供一些有关我的项目和应用程序的信息。 我有一个django app photo,我有两个模型,PhotoUserCommission

这些是模型

class Photo(models.Model):
   name = models.CharField(max_length = 100)
   photo = models.ImageField(upload_to = 'photos', blank=False,null=True)
   approved = models.BooleanField(default = False)
   approved_time = models.DateTimeField(auto_now=True,null=True,blank=True)
   uploaded_time = models.DateTimeField()
   description = models.CharField(max_length = 500 , blank = False , null = True)

class UserCommission(models.Model):
        user = models.ForeignKey(User)
        created_time = models.DateTimeField('Created Time',auto_now_add=True)
        commission = models.IntegerField()
        photo_name=models.CharField(max_length=255)
        photo = models.ImageField(upload_to='commission_image')
        download = models.DateTimeField()
        photo_id = models.CharField(max_length=300)

对于我的第一次迁移,我根据教程

应用了以下内容
python manage.py schemamigration photo --initial

我立即申请了以下命令

python manage.py migrate photo

然后我对我的Photo模型进行了更改,并将以下命令应用于最终迁移

  python manage.py schemamigration photo --auto

  python manage.py migrate photo

最后我的第一次迁移已成功完成,已编辑的列已添加到Photo模型中!

现在在另一种情况下,我必须在我的UserCommission模型中进行更改,因为我遵循了我第一次迁移所遵循的相同过程。但是在第二次迁移的最后一个命令之后< / p>

python manage.py migrate photo

我面临以下错误

为照片运行迁移:   - 向前迁移到0002_initial。

  

照片:0001_initial   致命错误 - 以下SQL查询失败:CREATE TABLE&#34; photo_photo&#34; (&#34; id&#34; serial NOT NULL PRIMARY KEY,&#34; name&#34; varchar(100)NOT NULL,&#34; photo&#34; varchar(100)NULL,&#34; approved&# 34; boolean NOT NULL,&#34; approved_time&#34;带时区的时间戳为NULL,&#34; uploaded_time&#34;带时区的时间戳为NOT NULL,&#34; description&#34; varchar(500)NULL,& #34; keyword&#34; varchar(500)NULL,&#34; image_id&#34; varchar(300)NULL,&#34; Certified&#34; boolean NOT NULL,&#34; approved_by&#34; varchar(100 )NOT NULL,&#34; user_id&#34;整数NOT NULL,&#34; total_download&#34;整数NOT NULL,&#34; watermarked_image&#34; varchar(100)NULL,&#34; dpi_value&#34;整数NOT NULL)   错误是:关系&#34; photo_photo&#34;已经存在   迁移错误:照片:0001_initial   DatabaseError:关系&#34; photo_photo&#34;已存在

DatabaseError: relation "photo_photo" already exists

并告诉你什么,它真的很困扰我。

1 个答案:

答案 0 :(得分:2)

听起来已经应用了迁移,数据库认为它还没有。您始终可以migrate --fake只更新数据库中的表,而无需尝试应用迁移。

在您的情况下,您似乎需要(至少)python manage.py migrate photo --fake 0002。您可能必须为多个迁移执行此操作,具体取决于您拥有的数量以及您已完成的操作。