【问题标题】:django south migration error relation "photo_photo" already existsdjango南迁移错误关系“photo_photo”已经存在
【发布时间】:2015-04-28 10:06:25
【问题描述】:

我正在使用Django South。我正在关注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 模型,为此我遵循了我第一次迁移所遵循的相同过程。但是在第二次迁移的最后一个命令之后是

python manage.py migrate photo

我遇到以下错误

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

照片:0001_initial 致命错误 - 以下 SQL 查询失败: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" 时间戳,时区为 NULL,"uploaded_time" 时间戳,时区不为 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" 整数 NOT NULL, "total_download" 整数 NOT NULL, "watermarked_image" varchar(100) NULL, "dpi_value" 整数 NOT NULL) 错误是:关系“photo_photo”已经存在 迁移错误:照片:0001_initial DatabaseError: 关系“photo_photo”已经存在

DatabaseError: relation "photo_photo" already exists

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

【问题讨论】:

    标签: python django django-south


    【解决方案1】:

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

    在您的情况下,您似乎需要(至少)python manage.py migrate photo --fake 0002。根据您的迁移数量和所做的工作,您可能需要为多个迁移执行此操作。

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 2018-04-07
      • 2023-03-08
      • 2015-09-01
      • 2019-11-17
      • 2015-11-16
      • 2017-01-28
      • 2011-03-31
      • 2021-01-09
      相关资源
      最近更新 更多