我正在使用Django South。我正在遵循http://south.readthedocs.org/en/latest/tutorial/part1.html
的教程首先,我想提供一些有关我的项目和应用程序的信息。
我有一个django app photo
,我有两个模型,Photo
和UserCommission
。
这些是模型
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
并告诉你什么,它真的很困扰我。
答案 0 :(得分:2)
听起来已经应用了迁移,数据库认为它还没有。您始终可以migrate --fake
只更新数据库中的表,而无需尝试应用迁移。
在您的情况下,您似乎需要(至少)python manage.py migrate photo --fake 0002
。您可能必须为多个迁移执行此操作,具体取决于您拥有的数量以及您已完成的操作。