今天在测试往数据库存图像、读图像以及更新图像时,前面存和读都没问题,但是后面用一张新图new.jpg更新时就出现上面的异常,图像字段为img,BLOB类型。
Data truncation即字段过长,放不下。网上找了半天都是关于编码的。即中文字符一个字符占据的空间是一个英文字符的两倍,因此而导致放不下。但是我这个是图像的存取,存取的是Binary Stream(字节流),所以我怀疑可能是图像文件过大,一查果不其然。
old.jpg原图有55.6K,而new.jpg有92.3K。去查了下BLOB允许的最大值,如下:
MySQL的四种BLOB类型
类型 大小(单位:字节)TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16MLongBlob 最大 4G
显然92.3K超出了BLOB的最大范围。