Data too long for column 'xxxx' at row 1 除了字段超長的另一種情況


{
 "result":null,
 "resultCode":"10001",
 "resultMsg":"\n### Error updating database.  Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'xxxx' at row 1\n### The error may exist in class path resource [mapper/xxxx.xml]\n### The error may involve xxxxx.insertSelective-Inline\n### The error occurred while setting parameters\n### SQL: insert into xxxx  ( xxxx,  xxxx,  xxxx, xxxx
, xxxx, xxxx, xxxx ) values ( ?, ?, ?, ?, ?, ?, ? )\n### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'xxxx' at row 1\n; ]; Data truncation: Data too long for column 'xxxx' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'xxxx' at row 1" }

  今天代碼里面報了一個這樣的錯誤,Debug的時候取出這條SQL 和對應字段的數據  發現用Navicat 可以執行插入動作,然后很長的一段時間一直搞不定這個錯誤,因為字段映射正確,數據庫中字段夠長。

 

后來發現是同事在表中新增字段后,在修改 Mybatis的 映射xml文件時,insert into xxxx(column1,column2,column_add_1,column_add2,column3,column4) values (value1,value2,value_add_1,value_add2,value3,value4) 時 value_add_1,value_add2 兩個新增列 位置寫錯了,寫成了(value1,value2,value3,value4,value_add_1,value_add2)

這樣一來,雖然在Java代碼中 字段的內容是通過 bean 對應的字段傳遞到mybatis的映射文件中,但在執行插入動作時,字段匹配錯誤,導致原來很短的一個列,插入了很長的數據,所以報了  Data too long for column 'xxxx' at row 1  這個錯誤。

 

中間浪費了兩個小時沒定位出來,這件是讓我想到,我在定位錯誤的時候,應該仔細的看控制台打印的日志,而不能想當然的主觀上肯定錯誤不會出現在某處,從而浪費時間。



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM