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

MySQL中DECIMAL(5,3)存300触发value out of range,是否需调整长度?

为啥DECIMAL(5,3)存300会报错?怎么解决?

这问题我之前帮同事排查过好几次,核心是你没吃透MySQL里DECIMAL(M,D)的定义逻辑:

  • M代表总位数(包括整数部分和小数部分的所有数字,不含小数点)
  • D代表小数部分的固定位数

你定义的DECIMAL(5,3),意味着:

  • 小数部分必须占3位
  • 整数部分最多只能有5-3=2位

所以这个字段能存的最大值是99.999,而你要存的300是3位整数,加上默认补的3位小数后变成300.000,总位数达到了6位,远超M=5的限制,自然就触发“value out of range”错误了。

解决方案:调整字段的总位数M

肯定要修改字段类型,增大M的值。比如你要存300.000,总位数至少需要3(整数)+3(小数)=6,所以可以改成DECIMAL(6,3)——这样整数部分最多能到999,完全满足存300的需求。如果以后可能存更大的数(比如1000),那就把M设为7,也就是DECIMAL(7,3)。

修改字段的SQL命令示例:

ALTER TABLE your_table_name MODIFY COLUMN your_column_name DECIMAL(6,3);

记得把your_table_name和your_column_name换成你实际的表名和字段名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:58:00