DatabaseError:类型字符变化的值太长(100)

tde*_*lam 36 django postgresql

我有一个运行我们几年前在内部构建的迷你CMS的Django网站,它使用的是postgresql.保存简单标题和文本段落时,我收到以下错误:

value too long for type character varying(100)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,没有一个列是变化的(100)它们都是200或250,即使是默认的Django已经从100改为200由于这里提到重新打开的票

有谁知道这个问题的解决方案?

Mic*_*lov 66

我可以打赌,你有一个没有预定长度的SlugField吗?将其设置为255并进行迁移

  • @michael令人印象深刻.我很困惑. (3认同)

Ker*_*ge0 26

我在使用文件字段时也遇到了这个问题,并且在我的脑袋上刮了一会儿.当然,默认的FileField实例创建时具有100个字符的限制.

https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield


Lak*_*sad 13

这是来自Postgres而不是django的错误消息.

您似乎已更改了字段的长度models.py,但这并未更改您执行a时创建的数据库长度manage.py syncdb.

您必须直接更改数据库中字段的长度.

  • 我没有在模型中改变它们.当我们改变数据库属性时,我像往常一样向南跑,我们已经迁移了,我们在postgres中手动双重检查了所有表,并且没有任何不同的100个残余.我很迷惑. (3认同)

7gu*_*uyo 5

姜戈2.1

我在从 sqlite3 切换到 postgresql 时遇到了这个问题。删除每个应用程序的迁移文件夹中除__init__.py之外的迁移文件 ,然后重新运行迁移

(venv)myapp$python manage.py makemigrations
(venv)myapp$python manage.py migrate
(venv)myapp$python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

  • 这对我没有帮助,迁移的创建不依赖于数据库。 (2认同)