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

向MySQL的DECIMAL(10,10)字段写入2.5报Out of range错误如何解决

报错原因

MySQL中DECIMAL(M,D)类型的两个参数定义如下:

  • M:数值的总有效位数,取值范围为1~65
  • D:小数点后保留的有效位数,取值范围为0~M

你定义的字段类型为DECIMAL(10,10),意味着总位数10位全部分配给了小数部分,整数部分只能为0,字段支持的数值范围是[-0.9999999999, 0.9999999999]。你尝试写入的2.5整数部分存在非0值,超出了字段允许的存储范围,因此触发数据截断异常。

解决方案

根据你的业务需求选择对应方案即可:

  • 若业务需要存储包含整数位的小数,调整字段的DECIMAL参数即可。例如你需要存储最多8位整数、2位小数的金额,可将字段修改为DECIMAL(10,2),该类型最大支持存储99999999.99,可完全覆盖2.5这类数值。修改字段的SQL语句如下:
ALTER TABLE wallets MODIFY COLUMN amount DECIMAL(10,2) NULL;

注意:如果表中已有存量的amount数据,修改字段类型前请先备份数据,避免小数位截断导致精度丢失。

  • 若业务确实要求该字段只能存储小于1的小数,请检查业务逻辑,修正写入的数值符合字段范围要求即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:06:05