【问题标题】:Django South "myapp.foo" already exists" error with initial migrationDjango South“myapp.foo”已经存在”初始迁移错误
【发布时间】:2011-03-31 23:35:21
【问题描述】:

我有一个现有的应用有很多数据库条目

class Foo(models.Model):
    value = models.TextField(u"Value")

为此,我这样做:

python manage.py schemamigration myapp --initial
python  manage.py migrate myapp

我把模型改成这样:

class Foo(models.Model):
    value = models.TextField(u"Value")
    live = models.BooleanField(u"Live", default=False)
    creation_time = models.DateTimeField("Creation Time", auto_now_add=True, null=True, blank=True)

并迁移:

python manage.py schemamigration myapp --auto
python  manage.py migrate myapp

我收到django.db.utils.DatabaseError: relation "myapp.foo" already exists 错误。

我已经检查了this 的问题,但 South 似乎不再支持 --fake。

【问题讨论】:

    标签: django django-models django-south


    【解决方案1】:

    您的模型在我看来无效,但如果这实际上是导致问题的原因,我会感到惊讶。

    看起来你的第一个参数是verbose_name 属性,你的模型应该是这样的:

    class Foo(models.Model):
        value = models.TextField(verbose_name = u"Value")
        live = models.BooleanField(verbose_name = u"Live", default=False)
        creation_time = models.DateTimeField(verbose_name = u"Creation Time", auto_now_add=True, null=True, blank=True)
    

    (对于creation_time,您还忘记了verbose_name 之前的u)。

    同时,--fake 肯定仍受支持(请参阅docs),当您尝试运行它时遇到什么错误?

    【讨论】:

    • 多米尼克所说的。我已经成功地将--fake 与最新版本的 South 一起使用。还有其他问题。
    • 我尝试将 --fake 与 schemamigration 命令一起使用,而不是迁移。非常感谢多米尼克!
    猜你喜欢
    • 2011-08-06
    • 2019-11-17
    • 2012-08-06
    • 1970-01-01
    • 2013-10-25
    • 2011-03-06
    • 1970-01-01
    • 2017-09-05
    • 2015-04-28
    相关资源
    最近更新 更多