MysqlDataTruncation:数据截断:第 1 行中列“列”的范围值超出范围
我正在使用java和MySQL。我正在尝试在表中插入一个值。
当我插入时,我得到这个异常:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of
range value for column 'idPxxx' at row 1
只有5%的刀片产生这种异常,其他刀片则起作用。该错误是什么意思,我该如何防止它?
我正在使用java和MySQL。我正在尝试在表中插入一个值。
当我插入时,我得到这个异常:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of
range value for column 'idPxxx' at row 1
只有5%的刀片产生这种异常,其他刀片则起作用。该错误是什么意思,我该如何防止它?
这意味着您存储的数据不适合。例如,字符串可能太长,或者数字太大。idPxxx
的数据类型是什么?您试图在其中存储什么?idPxxx
如何在MySQL控制台上生成此异常:
mysql> create table penguin (mydecimal decimal(9,8));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into penguin values (1234.1234);
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+----------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------+
| Warning | 1264 | Out of range value for column 'mydecimal' at row 1 |
+---------+------+----------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from penguin;
+------------+
| mydecimal |
+------------+
| 9.99999999 |
+------------+
1 row in set (0.00 sec)
您试图将 1234 塞进一列中,该列最多可以重复 9.9 次。请注意,该行仍处于插入状态。
您可以使用严格模式获取MySQL控制台来防止此转换:
mysql> set sql_mode=STRICT_ALL_TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into penguin values (5678.5678);
ERROR 1264 (22003): Out of range value for column 'mydecimal' at row 1
插入命令在尝试向企鹅添加第二行时失败:
mysql> select * from penguin;
+------------+
| mydecimal |
+------------+
| 9.99999999 |
+------------+
1 row in set (0.00 sec)
解决 方案