gpt4 book ai didi

Django - 类型字符变化的值太长(但似乎在 max_length 限制内)

转载 作者:行者123 更新时间:2023-11-29 12:57:17 24 4
gpt4 key购买 nike

我遇到了一个非常奇怪的数据库错误:

psycopg2.DataError: value too long for type character varying(4)

当我试图在我的调查应用程序中保存一个问题时会发生这种情况。奇怪的是:我相信我只是想将 4 个字符保存到该字段!

.save(update_fields=['question_type', 'question_text', 'quota']) 调用通过了 ModelForm 验证,所以我去我的数据库查看它是否真的与模型匹配,它确实:

db=# \d surveyapp_question;
Table "public.surveyapp_question"
Column | Type | Modifiers
---------------+------------------------+-----------
uuid | uuid | not null
question_type | character varying(4) | not null
question_text | character varying(255) |
order | integer |
quota | smallint |

如您所见,模型中只有一个 varchar(4):question_type。我试图保存到该列的值是“text”。 POST 数据显示“文本”。如果我将 print(form.cleaned_data['question_type'] 放在 form_valid 中,它还会显示 text

所以我查看了 postgres 日志:

tail -f /var/log/postgresql/postgresql-9.4-main.log
...
UPDATE "surveyapp_question" SET "question_type" = '(''text'',)' WHERE...

Sooo ... 这看起来不对? “''text''”有什么用?为什么那个元组中没有 "text"?这是导致错误的原因吗?

我正在运行 django 1.10、psycopg2 2.6.2 和 PostgreSQL 9.4.7。

最佳答案

所以在做的时候:

self.question.some_property = form.cleaned_data['some_property'],

我不小心在尾部附加了一个逗号,这并没有以某种方式为我的特定代码引发语法错误,而是作为一个狡猾的查询直接通过 psycopg2 到数据库。这可能是一个非常模糊的错误,不会发生在其他任何人身上,但我会留下这个问题,以防调试过程对人们有用。

关于Django - 类型字符变化的值太长(但似乎在 max_length 限制内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39902228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com