我得到一個非常奇怪的數據庫錯誤:Django的 - 值過長類型字符改變(但似乎是MAX_LENGTH期限內)
psycopg2.DataError: value too long for type character varying(4)
這時候我想保存在Question
發生我的調查應用。奇怪的是:我相信我只是試圖在這個領域保存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數據顯示「文本」。如果我在form_valid
中輸入print(form.cleaned_data['question_type']
,它也會顯示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。
你可以發佈你的表單,視圖和模型嗎? –
謝謝你提示Timmy--它只有當我清理公共查看的「視圖」時,我注意到一行中有一個尾隨逗號被添加到設置'self'屬性的行上。如何將其轉換成狡猾的SQL不在我身邊! – Escher