【问题标题】:django south migration not updating databasedjango南迁移不更新数据库
【发布时间】:2013-09-21 18:13:52
【问题描述】:

好的,所以我正在创建一个 django 应用程序,并且我已经在我的 settings.py 的“INSTALLED_APPS”部分安装了南应用程序。我一直在使用

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

命令,直到最近它们一直运行良好,对我的模型进行了更改。

class Users(models.Model):
    days = (('1', '1'), ('2', '2'),)
    day = models.CharField(verbose_name='', max_length=1, default='Day')

现在,如您所见,我在这里犯了两个错误。首先是我将默认设置为“Day”,而它甚至不是变量“days”中的选项。我还说过 max_length=1 并且默认为 3 位数长。运行 schemamigration 和 migrate 命令后,它说给出了一个错误提示

DatabaseError: value too long for type character varying(2)

然后当我这样做时

python manage.py runserver

它确实提供了选择,除了“Day”不是默认值,默认值为“1”。 然后我添加了“Day”作为选项,并且我更改了 max_length=3,除非我现在这样做

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

它仍然给出 DatabaseError。我又试了一次,当我执行 schemamigration 命令时,它说没有进行任何更改,然后当我尝试执行 migrate 命令时,它仍然给出数据库错误。

我正在考虑从命令行运行 SQL 命令以将“天”的最大长度更新为 3,但是当我查看 PostgreSQL 中的数据库(链接到我的应用程序的数据库)时,它说没有“天” ' 列已创建。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 您能否显示源代码,包括您在进行更改后使用的选择部分?这可能会有所帮助。您可以检查您的数据库(例如,使用 sqliteman 或您喜欢的工具)并检查表布局实际上是什么。

标签: python django django-models sql-update django-south


【解决方案1】:

在数据库中检查 south_migration_history 表。

可能已经有一个用于特定应用的条目以及您正在运行的迁移。

因此,如果您的南迁移名称以 0003 开头,请确保在迁移之前它不在该特定应用的 south_migration_history 中。

如果在 south_migration_history 中已经有您的迁移条目,请删除该条目并再次运行迁移命令。

试试看。

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 2021-07-06
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多