Django窗体/数据库错误:值太长,无法更改类型字符(4)

2024-05-14 10:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图将一个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。如果能从概念上概括一下发生了什么以及如何解决问题,我将非常感激。


Tags: djangoid数据库forvaluepostgresqltype公司
2条回答

是的,把柱子加宽。错误信息非常清楚:您的200个字符太大,无法放入varchar(4)。

首先,将模型字段max_length属性从4更新为一个您期望的足够长的数字,以包含您提供给它的数据。

接下来,必须将数据库列本身更新为django will not automatically update existing columns

以下是一些选项:

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

2:通过SQL手动更新列。

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

ALTER TABLE my_table ALTER COLUMN my_column TYPE VARCHAR(200)

3:学习并使用数据库迁移工具,如django south,它将帮助您使用模型代码更新数据库。

使用Django 1.11和Postgres 9.6,我遇到了这个问题,没有明显的原因。

我在迁移文件中设置max_length=255并执行:

manage.py迁移

然后,我在模型的max_length上设置正确的长度,并再次运行另一个makemigrations和ranmigrate

相关问题 更多 >

    热门问题