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

django south migration error relation "photo_photo" already exists

我正在使用 Django South.I 正在学习 http://south.readthedocs.org/en/latest/tutorial/part1.html

的教程

首先我想提供一些关于我的项目和应用程序的信息。 我有一个 django 应用程序 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 模型进行更改,为此我遵循了与我的第一个 migration.but 相同的过程,这是在第二个命令的最后一个命令之后

的迁移
python manage.py migrate photo

我遇到了以下错误

运行 照片迁移: - 迁移到 0002_initial.

photo:0001_initial FATAL ERROR - The following SQL query failed: CREATE TABLE "photo_photo" ("id" serial NOT NULL PRIMARY KEY, "name" varchar(100) NOT NULL, "photo" varchar(100) NULL, "approved" boolean NOT NULL, "approved_time" timestamp with time zone NULL, "uploaded_time" timestamp with time zone NOT NULL, "description" varchar(500) NULL, "keyword" varchar(500) NULL, "image_id" varchar(300) NULL, "Certified" boolean NOT NULL, "approved_by" varchar(100) NOT NULL, "user_id" integer NOT NULL, "total_download" integer NOT NULL, "watermarked_image" varchar(100) NULL, "dpi_value" integer NOT NULL) The error was: relation "photo_photo" already exists Error in migration: photo:0001_initial DatabaseError: relation "photo_photo" already exists

DatabaseError: relation "photo_photo" already exists

告诉你吧,这真的很困扰我。

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

在您的情况下,您似乎需要(至少)python manage.py migrate photo --fake 0002。您可能需要为不止一次迁移执行此操作,具体取决于您拥有的数量和您完成的工作。