2012-01-27 138 views
24

我有一個Django網站,它運行了我們多年前在內部構建的迷你CMS,它使用了postgresql。當保存一個簡單的標題和文本的段落,我得到了以下錯誤:DatabaseError:數值太長,不能輸入字符(100)

value too long for type character varying(100) 

奇怪的是,沒有一個單一的列不同(100),它們都是200或250,甚至默認的Django的人有從100更改爲200由於re-opened ticket mentioned here

有沒有人知道這個問題的解決方案?

回答

37

我敢打賭,你有一個沒有預定義長度的SlugField?將其設置爲255並遷移

+0

你明白了。我並不認爲這是問題,因爲默認情況下Django將它們存儲爲不同的(50),但項目中的某個依賴項的模型對slug字段的模型有所不同(100);我忽略了它。 – JeffC 2012-01-30 19:17:04

+2

@邁克爾令人印象深刻。我很困難。 – harristrader 2016-01-06 16:07:38

+0

因此,像slug = models.SlugField(max_length = 255),然後在heroku上遷移? – 2016-04-24 00:05:53

13

這是來自Postgres的錯誤消息,而不是django。

您似乎已經更改了models.py中的字段長度,但這不會更改在執行manage.py syncdb時創建的數據庫長度。

您必須直接更改數據庫中字段的長度。

+2

我沒有改變他們只在模型中。當我們改變數據庫屬性並且遷移後,我們像往常一樣往南跑,我們在postgres中手動對所有表進行了雙重檢查,並且沒有任何地方存在變化100的殘餘。我很困惑。 – JeffC 2012-01-27 18:17:53

0

我意識到這個問題已經回答了,但對於其他人來這裏尋找錯誤消息時:

在我的情況下,問題是,我的表名超過50個字符。顯然這是不允許的。更改表名解決了問題。

在這裏閱讀更多:https://code.djangoproject.com/ticket/18959

0

我有Django的autoslugfield類似的問題 我使用的是類似的包,然後切換到Django的autoslugfield

我得到這個錯誤: value too long for type character varying(50)

儘管我的models.py有:

slug = AutoSlugField(max_length=255, populate_from='name', unique=True)

,並在我的分貝它的類型是 character varying 255

一次,我從外地刪除​​即

slug = AutoSlugField(populate_from='name', unique=True)

然後它工作得很好

0

Michael Samoylov的回答指出我正確的方向。我有同樣的錯誤出現,除了它是與FileField。

即使未明確設置max_length,字段也會有max_length。增加值以便數據適合以避免錯誤。

在我的情況下,數據太大而不能合理地存儲在數據庫中。我採取了將我的文件保存到磁盤,然後將文件路徑保存在數據庫中。

相關問題