mysql數據庫操作報錯Data truncation: Data too long for column問題解決方案

報錯:

{"@timestamp":"2020-05-13T14:27:07.001+08:00","@version":"1","message":"數據庫操作失敗:\r\n### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'box_list_json' at row 1\r\n### The error may involve com.hierway.vslm.dataaccess.mybatis.mapper.SboxSetDao.modifyBoxSetSelect-Inline\r\n### The error occurred while setting parameters\r\n### SQL: update sbox_set SET req_id = ?, spec_id = ?, capability = ?, box_list_json = ? where set_id = ?\r\n###

報錯原因:報錯意思就是由於某個字段數據太長導致更新失敗

 

業務場景:

有一個分配表,每一條分配記錄中,有一個字段需要保存它的分配的單元id。這些被分配的單元id是以json的格式存到數據庫中。

因爲業務需求,如果分配的值稍微大點,就需要存寫大量的單元id,導致上面的情況的出現。

 

探查原因:

MySQL的一條記錄長度:MySQL默認規定一條記錄最大的長度是65535字節,所有的字段加在一起所佔的字節數不能超過65535。但是MySQL中字段的長度有的時使用字節來規定int,有些字段類型是使用字符個數來規定的。

1個漢字所佔的是多少?根據字符編碼而定,

latin1字符集1個字母佔據1個字節。

gbk字符集1個漢字佔據2個字節

utf8字符集1個漢字佔據3個字節

還需要考慮varchar的記錄長度,需要使用1或2個字節來記錄。

 

解決方案:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章