我往mysql中的blob字段插入图片,报错:try{ 
Class.forName("com.mysql.jdbc.Driver");//驱动的名称 
Connection c=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/image?user=root&password=liuys"); 
//访问的数据库的帐号密码 
Statement s=c.createStatement(); 
File f = new File("F:/photo/zhangting/0.jpg" ); 
      try{ 
             PreparedStatement pstm = c.prepareStatement("insert into image(name,img) values (?,?)"); 
             InputStream is = new FileInputStream(f); 
             pstm.setString(1, "m1"); 
             pstm.setBinaryStream(2, is, is.available()); 
             int count = pstm.executeUpdate(); 
             if(count>0){ 
                 System.out.println("插入成功"); 
             }else{ 
                 System.out.println("插入失败"); 
             } 
             is.close(); 
             pstm.close(); 
             c.close(); 
             
         } catch (Exception e){ 
             e.printStackTrace(); 
         } 
         s.close();  
         }catch(Exception e){ 
        e.printStackTrace();}//捕获异常 
} 报如下的错误: Data too long for column 'img' at row 1
请高手指点,本人接触数据库的知识不是太多,谢了。

解决方案 »

  1.   

    desc image;看一下你的表结构。
      

  2.   

    blob才64K,你的图片肯定超64K了
      

  3.   

    经过楼上给我意见,果然是图片太大了,我换成小的文件就可以了,还是我的图片太大的原因,blob字段也是有大小限制的。
      

  4.   


    BLOB介绍    BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。mysql BLOB类型    MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
      MySQL的四种BLOB类型
      类型 大小(单位:字节)
      TinyBlob 最大 255
      Blob 最大 65K
      MediumBlob 最大 16M
      LongBlob 最大 4Glinux修改etc/my.cnf
        [mysqld]
        max_allowed_packet = 16M //不同于[mysqldump]下的max_allowed_packet