我正试图将一个stripe(计费服务)公司id[大约200个字符]保存到我在Django的数据库中。
具体错误是:
database error: value too long for type character varying(4)
如何使Django允许更长的值?
我看到: value too long for type character varying(N) 以及: Django fixture fails, stating "DatabaseError: value too long for type character varying(50)"
根据我的网络主机,我的数据库已经为UTF-8编码。
编辑:我发现有一个答案建议将列加宽。是否涉及修改PostgreSQL数据库?
我的特定系统是Webfaction,CentOs共享机,在PostgreSQL上运行的Django。如果能从概念上概括一下发生了什么以及如何解决问题,我将非常感激。
是的,把柱子加宽。错误信息非常清楚:您的200个字符太大,无法放入varchar(4)。
首先,将模型字段
max_length
属性从4更新为一个您期望的足够长的数字,以包含您提供给它的数据。接下来,必须将数据库列本身更新为django will not automatically update existing columns。
以下是一些选项:
一: 删除数据库并再次运行syncdb。警告:您将丢失所有数据。
2:通过SQL手动更新列。
键入
python manage.py dbshell
进入数据库shell并键入3:学习并使用数据库迁移工具,如django south,它将帮助您使用模型代码更新数据库。
使用Django 1.11和Postgres 9.6,我遇到了这个问题,没有明显的原因。
我在迁移文件中设置max_length=255并执行:
manage.py迁移
然后,我在模型的max_length上设置正确的长度,并再次运行另一个makemigrations和ranmigrate。
相关问题 更多 >
编程相关推荐