Kha*_*dez 10 java mysql database
我正在使用java和MySQL.我试图在表中插入一个值.
当我插入时,我得到这个例外:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of
range value for column 'idPxxx' at row 1
Run Code Online (Sandbox Code Playgroud)
只有5%的插入产生此异常,其他插件则有效.错误是什么意思,我该如何预防呢?
Ari*_*iel 14
这意味着您存储的数据idPxxx不适合.例如,字符串可能太长,或者数字太大.
什么是数据类型idPxxx?你想把它储存在哪里?
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)
Run Code Online (Sandbox Code Playgroud)
您尝试将 1234 塞入可能占用 max 的列中9.99999999,因为DECIMAL(9, 8)总共 9 位数字,其中 8 位是小数点后的数字。请注意,该行仍然被插入。
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
Run Code Online (Sandbox Code Playgroud)
插入命令尝试添加第二行失败penguin:
mysql> select * from penguin;
+------------+
| mydecimal |
+------------+
| 9.99999999 |
+------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)