2017-03-16 92 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数据类型构建一个自定义类型。