我使用的是java和MySQL。我正在尝试将一个值插入到表中。
当我插入时,我得到了这个异常:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of
range value for column 'idPxxx' at row 1只有5%的插入会产生这个异常,其他的都可以。这个错误是什么意思,我如何防止它?
发布于 2011-11-17 17:49:38
这意味着您存储在idPxxx中的数据不适合。例如,字符串可能太长,或者数字太大。
idPxxx的数据类型是什么?你想在里面储存什么呢?
发布于 2014-01-13 08:19:07
如何在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 1insert命令尝试向penguin添加第二行失败:
mysql> select * from penguin;
+------------+
| mydecimal |
+------------+
| 9.99999999 |
+------------+
1 row in set (0.00 sec)解决方案
发布于 2016-12-26 22:48:03
对我来说,问题是无符号数据类型,删除标志已经解决了我的问题。
https://stackoverflow.com/questions/8165054
复制相似问题