2017-03-16 89 views
4

ERROR 22001(string_data_right_truncation):值太長類型字符改變(255)數據類型 - 「值過長類型字符改變(255)」

我瞭解(並假設)的字符串會限制在一定數量的字符;不過,我不確定哪種類型最適合這種情況。

我應該在Phoenix框架中的博客的「內容」部分使用什麼類型?

數據將是文本的段落,不能限制大小。

在此先感謝。

回答

9

您收到的錯誤來自底層數據庫,其中列類型設置爲varchar這是在遷移中將列類型指定爲string時默認創建的內容。

要在255個字符以上存儲可變長度的字符串,您需要在遷移中指定列類型爲text。您可以使用遷移,如現有列的類型轉換爲text

alter table(:posts) do 
    modify :content, :text 
end 

模型的架構部分中的字段類型應保持爲string

schema "posts" do 
    field :content, :string 
end 
+0

這是一個有趣的解決方案;沒有意識到':text'類型在遷移中可用。 –

+0

Yeps!這裏有一點:https://hexdocs.pm/ecto/Ecto.Migration.html#module-field-types –

0

鑑於原始類型列表here我不認爲有一種原始類型真的適合您的需要。不過,您可以創建一個自定義類型(更多關於here),我認爲在這種情況下這將是您最好的選擇。假設你正在使用PostgreSQL(你沒有提到你的實際底層數據庫),可能你想用bytea數據類型構建一個自定義類型。