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

來源:互聯網
上載者:User

標籤: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 causecom.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:...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.