MySQL 错误 1264 (22003):列的值超出范围

Ste*_*eve 2 mysql decimal sqldatatypes

我收到此错误:

错误 1264 (22003):第 1 行的“median_comments”列的值超出范围

运行此查询后:

update influencers set `median_comments` = 1347 WHERE `id` = 1;
Run Code Online (Sandbox Code Playgroud)

我不知道为什么在这个没有任何小数且只有 4 位数字的数字上失败。

字段类型为:

median_comments   decimal(10,8)
Run Code Online (Sandbox Code Playgroud)

Jit*_*dav 9

您正在使用DECIMAL(10,8)这意味着小数点前的最大位数为(10 - 8) = 2

参考:DECIMAL 数据类型特征

DECIMAL 列的声明语法为 DECIMAL(M,D)。参数值的范围如下:

  1. M 是最大位数(精度)。它的范围是 1 到 65。
  2. D 是小数点右侧的位数(刻度)。它的范围是 0 到 30,并且不得大于 M。

要修复该错误,请将数据类型更改为DECIMAL(10,2).

ALTER TABLE `influencers`
    CHANGE COLUMN `median_comments` `median_comments` DECIMAL(10,2) NOT NULL DEFAULT 0;
Run Code Online (Sandbox Code Playgroud)