想知道,在mysql中图片是用什么数据类型存储的,怎么插入,比如说有个表叫type
create table type
(
   t_ID                 int not null comment '自动赋予新类别的编号。',
   t_name               char(15) comment '食品类别名称。',
   t_instruction        national char(1),
   t_image              longblob comment '描绘食品类别的图片。',
   primary key (t_ID)
);
这样的数据类型可以吗?还有怎么插入图片数据?
谢谢

解决方案 »

  1.   

    带_bin的二进制类型就可以存储
    另一种方式是,将图片进行base64编码,但会带来30%的空间开销
      

  2.   

    那可是怎么存这个文件呢?
    比如有一个文件叫yinliao.bmp
    那我要把它存到数据库里面用 update type set t_image='yinliao.bmp' where t_id=1;可以吗?这个yinliao.bmp我放在mysql下的数据库文件夹下了。
    望高手解惑,谢谢
      

  3.   

    update type set t_image=LOAD_FILE('/path/to/yinliao.bmp') where t_id=1
      

  4.   

    你的文件必须在MySQL数据库所在的主机上。这个文件路径也是在主机上的路径
      

  5.   

    你的数据类型没问题。请确认:
    1)你的文件是否存在,是否能被数据库启动用户所读取
    2)你的MySQL用户是否具有FILE权限。你问问题,也不给出你的环境,让别人怎么回答?文件权限,客户端和服务器的关系等等。
      

  6.   

    谢谢楼上两位,前些天回家了,没时间上网,呵呵.
    关于6楼说得,我的文件就是在虚拟机上的没错.
    七楼我可以很确定文件存在.我用的时mysql root登陆的,而且我也曾经导入过其他类型的数据,比如从一个txt里面读取数据到数据库的表中,所以我觉得应该具有file的权限,至于环境,我是在windows机下装了一个虚拟机,在虚拟机中装的mysql5.0,虚拟机是linux操作系统.其它的暂时还想不到,如果还要知道什么信息的话,留言,我非常想解决这个问题,在这里先谢谢大家了.
      

  7.   

    图片保存在mysql数据库是二进制流的形式
    binary类型
      

  8.   

    UNIX里路径是用“/”而不是“\”还有就是UNIX里严格区分大小写。
    UNIX系统里的“\”后面是用来加参数的
      

  9.   

    windows 环境下:update users set upic=LOAD_FILE('D:\\disk_bak\\vicky.jpg') where uid=1 
      

  10.   

    我插入、更新都说成功了,但表中还是空的(null).这是为啥呢?