elixir - Ecto 中的数据类型 - "value too long for type character varying(255)"

标签 elixir phoenix-framework ecto

ERROR 22001 (string_data_right_truncation): value too long for type character varying(255)

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

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

数据将是文本段落,并且大小不受限制。

提前致谢。

最佳答案

您收到的错误来自底层数据库,其中列类型设置为 varchar,这是当您在 a 中将列类型指定为 string 时默认创建的内容迁移。

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

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

模型架构部分中的字段类型应保留为字符串:

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

关于elixir - Ecto 中的数据类型 - "value too long for type character varying(255)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823377/

相关文章:

Elixir Ecto : How do I create a self-referential foreign key?

elixir - Poison.Encoder 如何预加载关联?

elixir - 使用 Ecto 一次插入多行。 "protocol Enumerable not implemented for #Ecto.Changeset"

elixir - 在 Phoenix 中处理嵌套表单/ecto 变更集的正确方法是什么?

elixir - 将我的 erlang 库模块 myerlib.erl 放入 elixir 树目录的位置,以便从 elixir 模块调用

elixir - 在 Ecto 中修改外键

datetime - 如何在 Elixir 中将字符串转换为 Ecto.DateTime?

Elixir 应用测试配置

postgresql - 尝试创建数据库时出错 - Ecto - Phoenix

elixir - Phoenix : using "conn" and "case" in a view