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

And*_*rie 16 elixir ecto phoenix-framework

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

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

我应该使用什么类型的凤凰框架博客的"内容"部分?

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

提前致谢.

Nav*_*ris 30

您获得的错误来自底层数据库,其中列类型设置varcharstring在迁移时指定列类型时默认创建的数据.

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

alter table(:posts) do
  modify :content, :text
end
Run Code Online (Sandbox Code Playgroud)

模型的模式部分中的字段类型应保持为string:

schema "posts" do
  field :content, :string
end
Run Code Online (Sandbox Code Playgroud)

  • 这是一个有趣的解决方案;没有意识到 `:text` 类型在迁移中可用。 (3认同)