MySQL 5.7 报错:ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'CR40020180611004'

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/vkingnew/article/details/83021942
在生产环境update一个语句报错:
ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'CR40020180611004'

经过网络查询是数据类型不一致导致的。
--查看表的类型:
mysql> desc sc_stockorder_2.outstockorder;
+-------------------+---------------+------+-----+-------------------+-----------------------------+
| Field             | Type          | Null | Key | Default           | Extra                       |
+-------------------+---------------+------+-----+-------------------+-----------------------------+
| id                | bigint(20)    | NO   | PRI | NULL              |                             |
| RefOrderNo        | varchar(50)   | NO   | MUL | NULL              |                             |
| Org_Id            | int(11)       | NO   |     | NULL              |                             |
| BatchNo           | varchar(50)   | YES  | MUL |                   |                             |
| Batch_Id          | varchar(50)   | YES  | MUL |                   |                             |
| State             | tinyint(4)    | YES  |     | 0                 |                             |
...
mysql> select state,reforderno from sc_stockorder_2.outstockorder where reforderno=402828300248;
+-------+--------------+
| state | reforderno   |
+-------+--------------+
|     1 | 402828300248 |
+-------+--------------+
1 row in set, 23288 warnings (0.48 sec)

mysql> update sc_stockorder_2.outstockorder set state = 3 where reforderno in (402828300259,402828300248);
ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'CR40020180611004'

mysql> update sc_stockorder_2.outstockorder set state=3 where reforderno='402828300248';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

出错原因:where条件中的值传入了错误的数据类型。reforderno是bigint类型的但是实际存储的。
具体原因待查!

猜你喜欢

转载自blog.csdn.net/vkingnew/article/details/83021942
今日推荐