MySQL异常-Data truncation: Data too long for column ‘xxx' at row 1

1. MySQL的大字段类型

    BLOB是一个二进制大对象,可以容纳可变数量的数据。

    有4种BLOB类型: TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,它们只是可容纳值的最大长度不同。
    有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最

    大长度和存储需求。

    BLOB 列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)。BLOB列没有字符

    集,并且排序和比较基于列值字节的数值值。TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排

    序和比较。

    在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。
 当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保

    证适合。

    但若运行在严格模式下,将产生异常:Data truncation: Data too long for column ‘xxx' at row 1

 几种类型的大字段最大长度说明:
 TINYBLOB最大长度为255(2^[8]–1)字节的BLOB列。
 TINYTEXT最大长度为255(2^[8]–1)字符的TEXT列。

 BLOB[(M)]最大长度为65,535(2^[16]–1)字节的BLOB列。可以给出该类型的可选长度M。如果给出,则MySQL

    将列创建为最小的但足以容纳M字节长的值的BLOB类型。
 TEXT[(M)]最大长度为65,535(2^[16]–1)字符的TEXT列。可以给出可选长度M。则MySQL将列创建为最小的但

    足以容纳M字符长的值的TEXT类型。

 MEDIUMBLOB最大长度为16,777,215(2^[24]–1)字节的BLOB列。
 MEDIUMTEXT最大长度为16,777,215(2^[24]–1)字符的TEXT列。

 LONGBLOB最大长度为4,294,967,295或4GB(2^[32]–1)字节的BLOB列。LONGBLOB列的最大有效(允许的)长

    度取决于客户端/服务器协议中配置最大包大小和可用的内存。
 LONGTEXT最大长度为4,294,967,295或4GB(2^[32]–1)字符的TEXT列。LONGTEXT列的最大有效(允许的)长

    度取决于客户端/服务器协议中配置最大包大小和可用的内存。

 

    实际使用中根据需要存入的数据大小定义不同的BLOB类型。
    需要注意的是:如果存储的文件过大,数据库的性能会下降很多。

2. 异常解决方法

    (1) 确保将要存储的字节是数据库中指定的字节类型能容纳的字节数;

    (2) 验证MySQL字符编码,例如在存储中文时可明确指定数据库连接编码:

    String url = "jdbc:mysql://localhost/pbdp?user=root&password=1234&useUnicode=true&characterEncoding=gbk ";

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值