码迷,mamicode.com
首页 > 数据库 > 详细

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value:...

时间:2018-04-15 19:42:35      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:JD   mysqli   遇到   roo   varchar   man   nested   end   direct   

在使用mybatis的@Update注解的时候,报了一个这样的错

### Error updating database.  Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 4028158162c347830162c347fb050000
### The error may involve com.xwj.mapper.UserMapper.updateUser-Inline
### The error occurred while setting parameters
### SQL: UPDATE xwj_user SET last_name = ? WHERE id = 2
### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 4028158162c347830162c347fb050000
; ]; Data truncation: Truncated incorrect DOUBLE value: 4028158162c347830162c347fb050000; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 4028158162c347830162c347fb050000] with root cause

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 4028158162c347830162c347fb050000
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3974) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486) ~[mysql-connector-java-5.1.46.jar:5.1.46]

 

调用的方法如下:

/**
     * 更新
     */
    @Update("UPDATE xwj_user SET last_name = #{lastName} WHERE id = ${id}")
    int updateUser(@Param("lastName") String name, @Param("id") String id);

在网上看了各种解决办法,有说是set语句中逗号误写成了and导致的,楼主遇到的不是这个情况

看上面的报错,以为是数据库中id字段(长度VARCHAR(32))为4028158162c347830162c347fb050000‘的这条数据长度过长导致的。于是将这条数据的id改为‘1’,一执行,发现执行成功。楼主便得意的以为是id过长导致的。

但心里也奇怪数据库明明可以放32位,为啥会报错呢?于是想一探究竟,id字段多少位时,才会报错。于是便将id改为是‘12’,然后‘123’...依次加,直到加到‘12345678901234567890123456789012’,一共32位了,仍然执行成功,这个时候楼主就懵逼了。这怎么会执行成功呢?

突然灵光一闪,观察到有没有可能是id中不是全数字导致的呢?于是将其中的一个数字改为字母,再执行就报错了。功夫不负有心人,终于找到了罪魁祸首

至于为啥id必须是纯数字,希望哪位大神在评论区留言,再次小弟谢过~

 

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value:...

标签:JD   mysqli   遇到   roo   varchar   man   nested   end   direct   

原文地址:https://www.cnblogs.com/xuwenjin/p/8848961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!