版权声明:本文为博主原创文章,转载请注明出处 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类型的但是实际存储的。
具体原因待查!