Ecto中的数据类型 - “类型字符变化的值太长(255)”

时间:2017-03-16 00:49:08

标签: elixir phoenix-framework ecto

  

ERROR 22001(string_data_right_truncation):类型的值太长   字符变化(255)

我理解(并假设)字符串将限制为一定数量的字符;但是,我不确定哪种类型最适合这种情况。

我应该在凤凰城框架中使用什么类型的博客“内容”部分?

数据将是文本段落,不能限制大小。

提前致谢。

2 个答案:

答案 0 :(得分:25)

您获得的错误来自基础数据库,其中列类型设置为varchar,这是在迁移中将列类型指定为string时默认创建的。

要存储超过255个字符的可变长度字符串,您需要在迁移中将列类型指定为text。您可以使用以下迁移将现有列的类型转换为text

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

模型架构部分中的字段类型应保留为string

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

答案 1 :(得分:0)

鉴于原始类型列表here,我认为没有一种真正适合您需求的原始类型。但是,你可以创建一个自定义类型(更多关于here),我认为在这种情况下,这是你最好的选择。假设您正在使用PostgreSQL(您没有提及您的实际底层数据库),可能您需要使用bytea数据类型构建自定义类型。