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

在使用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必须是纯数字,希望哪位大神在评论区留言,再次小弟谢过~

 

转载于:https://www.cnblogs.com/xuwenjin/p/8848961.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值