2013-09-21 119 views
0

好吧,所以我创建一个django应用程序,我已经在我的settings.py中'INSTALLED_APPS'部分安装了南应用程序。我一直在使用django南迁移没有更新数据库

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和迁移命令后,说了一个错误说

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

,然后当我做

python manage.py runserver 

它便从选择除了“天”是不是默认,默认为'1'。 我加入“日”作为选择,我改变了MAX_LENGTH = 3除了现在当我做

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

它仍然是给DatabaseError。我再次尝试了它,当我执行schemamigration命令时,它说没有做任何更改,然后当我尝试执行迁移命令时,它仍会给出数据库错误。

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

任何人有关于如何解决这个问题的想法?

+0

你可以在做出更改后显示源代码,包括您正在使用的选项部分吗?这可能有帮助。你可以检查你的数据库(例如使用sqliteman或你喜欢的工具)并检查表格布局的实际情况。 – OBu

回答

0

在数据库中检查south_migration_history表。

可能已经有特定应用程序和正在运行的迁移条目。

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

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

试试吧。