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

为什么MySQL中声明DECIMAL(0,0)会转为DECIMAL(10,0)且无报错?

现象原因

  • MySQL中DECIMAL(M,D)类型的两个参数存在固定的合法取值范围:
    • M是数字总位数,合法区间为1~65,缺省默认值为10
    • D是小数部分位数,合法区间为0~30,且必须小于等于M,缺省默认值为0
  • 你提交的DECIMAL(0,0)里M参数值为0,不符合合法范围要求,MySQL会自动将非法的M替换为默认值10,D参数0符合规则保留,最终生成的字段类型就是DECIMAL(10,0)。

无错误提示的原因

该行为由SQL模式配置决定:

  • MySQL默认未开启严格SQL模式(STRICT_TRANS_TABLES、STRICT_ALL_TABLES),针对字段类型参数不合法这类可兼容处理的异常,会自动修正为合法值后继续执行,不会抛出错误。
  • 若开启严格SQL模式后再执行该建表语句,会直接返回类型参数不合法的错误,终止建表操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:57:04