MySQL数据库新增数据报数据过长
具体内容如下:
问题背景
在保存数据到数据库中的时候报错:
org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'cal_data' at row 1
### The error occurred while setting parameters
### SQL: INSERT INTO test_one ( id, name, cal_data, type ) VALUES ( ?, ?, ?, ?, ? )
### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'cal_data' at row 1
; Data truncation: Data too long for column 'cal_data' at row 1; nested exception is com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'cal_data' at row 1
重点是:Data too long for column 'cal_data' at row 1
说明是数据库中 cal_data 字段长度不够,所以就修改数据库的长度即可!
解决办法
1️⃣:先查看该表的字段类型
DESCRIBE 表名;
即:DESCRIBE test_one;
2️⃣:修改长度
如果是VARCHAR类型的就是增加长度如:VARCHAR(255) 变成VARCHAR(500);
- 最大长度
对于VARCHAR类型,最大的长度取决于MySQL的版本和配置。在MySQL 5.0.3及以后版本中,VARCHAR的最大长度是65535字节。这意味着你可以存储最多65535个字符,但这取决于字符集(比如UTF-8编码的字符可能占用更多字节)。MySQL4.1以前,VARCHAR数据类型所支持的最大长度255,5.0以上版本支持65535字节长度,utf8编码下最多支持21843个字符。 - 字符集的影响
字符集对VARCHAR字段的实际存储空间有影响。例如,使用utf8mb4字符集(在MySQL 5.5.3及以后版本中引入,支持更广泛的Unicode字符),每个字符最多可以占用4个字节。因此,即使你定义了一个最大长度为255的VARCHAR字段,使用utf8mb4字符集时,理论上你可以存储最多922个字符(因为255 * 4 = 1020,但考虑到末尾的NULL终止符和一些可能的额外空间,实际可用字符数会少一些)。
如果是VARCHAR类型不够用,可以直接修改成TEXT类型;
- 最大长度
TEXT,理论上它应该能够存储非常大的文本数据(最多可达 65,535 字节); - 修改语句
ALTER TABLE test_one MODIFY COLUMN cal_data TEXT;
如果是TEXT类型还是不够用,那就修改成MEDIUMTEXT类型或者LONGTEXT类型;
数据确实需要存储超过 64KB 的内容,可以将 hcp 字段类型改为 MEDIUMTEXT(最大 16MB)或 LONGTEXT(最大 4GB):
ALTER TABLE test_one MODIFY COLUMN cal_data MEDIUMTEXT;
至此就可以正常保存很大的数据了!
OK♥
每天进步一点点!
关关雎鸠,在河之洲。
窈窕淑女,君子好逑。
参差荇菜,左右流之。
窈窕淑女,寤寐求之。
求之不得,寤寐思服。
悠哉悠哉,辗转反侧。
参差荇菜,左右采之。
窈窕淑女,琴瑟友之。
参差荇菜,左右芼之。
窈窕淑女,钟鼓乐之。
——先秦·诗经·国风·周南《关雎》
《关雎》是中国古代第一部诗歌总集《诗经》中的第一首诗,通常认为这是描写男女恋爱的情歌。此诗首章以关雎鸟相向合鸣,相依相恋,兴起淑女配君子的联想;以下各章,又以采荇菜这一行为兴起主人公对女子疯狂的相思与追求。整首诗情感丰富,文采斐然,艺术手法独特。它巧妙地运用了“兴”的表现手法,使得诗歌灵动且情感充沛;同时,诗歌的语言优美、朗朗上口,双声叠韵和重章叠词反复出现,显著增强了诗歌的音韵美和写人状物、拟声传情的生动性。

浙公网安备 33010602011771号