好的,我正在创建一个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命令,将'days'的最大长度更新为3但是当我在PostgreSQL中查看数据库(链接到我的应用程序的数据库)时,它表示没有'天' '专栏创建。
任何人都知道如何解决这个问题?
答案 0 :(得分:0)
在数据库中检查south_migration_history表。
可能已经存在针对特定应用的条目以及正在运行的迁移。
因此,如果您的南迁移名称以0003开头,请确保在迁移之前,该特定应用不在south_migration_history中。
如果您的迁移条目已在south_migration_history中删除,请再次运行迁移命令。
试试吧。