You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在phx.gen.schema生成的Ecto迁移中设置decimal字段精度

Ecto迁移配置decimal字段精度的方法
  • 方法1:生成迁移文件后手动修改
    运行mix phx.gen.schema命令后,打开自动生成的迁移文件(位于priv/repo/migrations/目录下),找到price字段的定义行,默认生成的内容为:
    add :price, :decimal
    修改为如下内容即可指定精度为decimal(20,10):
    add :price, :decimal, precision: 20, scale: 10
    其中precision代表数字总位数,scale代表小数部分的位数,完全匹配你需要的decimal(20,10)配置。

  • 方法2:生成schema命令中直接指定精度
    你可以在执行生成命令时直接指定decimal的精度参数,无需后续手动修改,完整命令如下:
    $ mix phx.gen.schema Coin coins ticker:string:unique name:string price:decimal:{20,10}
    用这个命令生成的迁移文件会自动带上precision和scale配置,符合你的需求。

  • 补充:若已执行过旧迁移需要修改字段精度
    如果之前已经用默认配置跑过迁移创建了表,需要新建一个迁移文件,使用modify方法修改字段:

    alter table(:coins) do
      modify :price, :decimal, precision: 20, scale: 10
    end
    

    执行新迁移后即可完成字段精度的更新。

内容的提问来源于stack exchange,提问作者Daniel Cukier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:06:07