0

好的,所以我正在创建一个 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 中的数据库(链接到我的应用程序的数据库)时,它说没有创建“天”列.

任何人都知道如何解决这个问题?

4

1 回答 1

0

在数据库中检查 south_migration_history 表。

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

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

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

试试看。

于 2013-09-25T18:20:13.330 回答