Django表单/数据库错误:类型字符变化的值太长(4)

zal*_*rak 6 python database django postgresql

我正在尝试将条带(计费服务)公司ID [大约200个字符左右]保存到我的Django数据库中.

具体错误是:

database error: value too long for type character varying(4)
Run Code Online (Sandbox Code Playgroud)

如何让Django允许更长的值?

我看到: 类型字符变化(N)的值太长, 并且: Django fixture失败,说明"DatabaseError:类型字符变化的值太长(50)"

  • 根据我的webhost,我的数据库已经编码为UTF-8.

  • 编辑:我看到一个答案建议扩大列.这是否涉及修改PostgreSQL数据库?

我的具体系统是Webfaction,CentOs共享机器,在PostgreSQL上运行的Django.我非常感谢对概念进行了概述,以及如何解决这个问题.

Yuj*_*ita 16

是的,使列更宽.错误消息非常明确:您的200个字符太大,无法容纳varchar(4).

首先,将模型字段max_length属性从4 更新为您期望足够长的数字,以包含您正在为其提供的数据.

接下来,您必须更新数据库列本身,因为django不会自动更新现有列.

以下是一些选项:

1:删除数据库并再次运行syncdb.警告:您将丢失所有数据.

2:通过SQL手动更新列.

键入python manage.py dbshell以进入数据库shell并键入

ALTER TABLE my_table ALTER COLUMN my_column TYPE VARCHAR(200)
Run Code Online (Sandbox Code Playgroud)

3:学习和使用django south等数据库迁移工具,这将有助于使用模型代码更新数据库.