Mysql 数值超出十进制数据类型的范围?

Mysql 数值超出十进制数据类型的范围?,mysql,Mysql,我有一个名为收盘价的列,它是十进制(6,2)。我的理解是,这意味着它可以有6位数字和2位小数,因此此列中可以容纳的最大数字是999999 但是,我现在遇到了以下错误: Numeric value out of range: 1264 Out of range value for column 'closing_price' at row 1 (SQL: insert into `stock_history` (`date`, `closing_price`, `stock_id`, `updat

我有一个名为
收盘价
的列,它是
十进制(6,2)
。我的理解是,这意味着它可以有6位数字和2位小数,因此此列中可以容纳的最大数字是
999999

但是,我现在遇到了以下错误:

Numeric value out of range: 1264 Out of range value for column 'closing_price' at row 1 (SQL: insert into `stock_history` (`date`, `closing_price`, `stock_id`, `updated_at`, `created_at`) values (2000-02-01, 51900.000000, 214, 2020-02-07 09:51:03, 2020-02-07 09:51:03))
我不明白这怎么会超出十进制(6,2)的范围。如果我的理解是错误的,请纠正我,如果我是正确的,请帮助我排除故障


我不知道为什么51900这个数字显示小数点后6位为零。我从一个API中得到这些值,很多值的末尾最多有6个零,但这是第一个在超过一百万次插入后抛出并出错的值。

您的理解有点不正确<代码>小数点(6,2)表示总共有6位精度,其中两位出现在小数点后。因此,要存储一个大到
9999999.99
,实际上需要
十进制(8,2)


如果您想要一种存储货币值的通用类型,您可以遵循的建议,该建议建议使用
DECIMAL(15,2)

您的理解是错误的,您可以存储的最大值是-9999.99-9999.99请参阅