【问题标题】:Ecto or Elixir datatype that maps to MySql BIGINT映射到 MySql BIGINT 的 Ecto 或 Elixir 数据类型
【发布时间】:2017-07-30 14:07:18
【问题描述】:

我是 Elixir 和 Phoenix 的新手(学习 6 个月),我有一种情况,我想在 MySql 中将 Ecto 模型的字段(不是主键或表 ID)分配给 BIGINT。

我意识到当您创建一个 Ecto 模型时,该模型在 MySql 表中的 ID 会在迁移后自动映射到 BIGINT

检查此site 后,我尝试在模型及其相应的迁移脚本中为 :integer:id 创建一个 Ecto 模型字段,但它总是给出我在 MySql 中的 INT 数据类型。

任何人都知道 Elixir 或 Ecto 中的哪种数据类型对应于 MySql 中的 BIGINT,所以当我执行迁移脚本时,我的表将具有 BIGINT 的特定列?

谢谢

【问题讨论】:

  • 在迁移中尝试输入:bigint,在架构中尝试输入:integer
  • @Dogbert,非常感谢 :)

标签: mysql elixir phoenix-framework ecto


【解决方案1】:

迁移中的类型应该是实际的数据库类型,而在架构中它应该是您在 Elixir 中想要的类型。由于 Elixir 支持任意精度整数,因此数据库中的所有整数类型通常都映射到原生的 :integer 类型。所以你想要的是在迁移中使用:bigint 类型,在架构中使用:integer

create table(:foos) do
  add :bar, :bigint
end

<!-- -->

schema "foos" do
  field :bar, :integer
end

【讨论】:

  • 当您拥有数据库的读写访问权限时,这非常有用。如果您只有数据库的读取权限(例如,遗留项目),该怎么办?
  • @Sebastialonso,在这种情况下,您不会进行迁移,并且有问题的数据库列已经是 BIGINT,对吧?所以你只需使用答案的后半部分。
猜你喜欢
  • 1970-01-01
  • 2015-02-06
  • 2013-07-15
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
相关资源
最近更新 更多