Data truncation: Data too long for column 'big_bit' at row 1

出现这个问题主要有两种原因:

1、编码问题

2、数据长度问题


对于第一个问题,我们只需要调整字段长度即可,例如我在mysql的表中插入一张图片,如果图片字段的格式为Blob(最大长度为65K),那么图片长度超过65K则会出现这个异常,解决办法是把Blob字段换成MediumBlob(16M)、或者LongBlob( 最大 4G)即可。


对于第二个问题就比较复杂了,以下为收集到的各种解决办法,我没有试过,仅供参考:

第一种情况:

将所有的编码都设置成utf8,jsp的contentType="text/html;charset=utf-8"
修改数据库默认编码ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 
修改表字段的编码ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL


第二种情况:

这种情况分为两步:插入数据和读取数据

1:插如数据到mysql中:
     在页面上加入本页的编码方式 
    <%@ page contentType="text/html;charset=gb2312" %>
     把你要插入的中文文字由gb2312转变为iso-8859
    title = new String(title.getBytes("GB2312"), "ISO-8859-1");
    ***注意此页面千万别在数据库的URL后面加任何编码方式*****
    conn = java.sql.DriverManager.getConnection    ("jdbc:mysql://localhost/zqswork","root","root");
  
   2:从mysql中读出数据到页面:
     依然在页面上加如编码方式
  <%@ page contentType="text/html;charset=gb2312" %> 
     把你要读出的中文由iso-8859转变为gb2312
  <%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
   ****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
    conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root");




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值