mariadb 当我插入一个图像到MySQL表的结果是空

avkwfej4  于 2022-11-08  发布在  Mysql
关注(0)|答案(5)|浏览(128)

这段代码有什么问题,我想向表中插入一个图像,但当我执行这段代码时,图像字段的结果是NULL
我尝试使用 MySQL Workbench 执行:

CREATE TABLE image(keyh int, img blob);
INSERT INTO image VALUES(1, load_file('d:\Picture\cppLogo.png'));
0s7z1bwu

0s7z1bwu1#

若要使用此函数,档案必须位于服务器主机上,您必须指定档案的完整路径名称,而且您必须具有FILE权限。档案必须可供所有人读取,且其大小小于max_allowed_packet字节。如果secure_file_priv系统变数设定为非空目录名称,则要加载的档案必须位于该目录中。
如果文件不存在或由于不满足上述条件之一而无法读取,则函数将返回NULL
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_load-file
你能怎么办?
请检查mysql正在使用哪个用户运行,并确保该用户可以读取该文件。请确保安全设置允许读取该文件,并且该文件的大小不大于max_allowed_packet
请参阅SHOW VARIABLES LIKE 'max_allowed_packet'
对我来说,看起来文件在你的本地主机上,而你试图上传它。这是不可能使用LOAD_FILE()的。文件必须已经在服务器上。
这个问题也可能是由您的windows目录分隔符字符\(如RiggsFolly所说),这是用于转义,而不是切换到unix风格/,然后:

LOAD_FILE('D:/Picture/cppLogo.png')

或者像Balazs Vago说的那样,你的图像的文件大小超过了BLOB字段所能容纳的大小。

5m1hhzi4

5m1hhzi42#

i was found正确的语法如下:
C:/wamp/binsql5.5.20/data/56VRLRFE.jpg'
不是这个
C:\wamp\binsql5.5.20\data\56VRLRFE.jpg'
谢谢你们所有的人答案:D

68bkxrlz

68bkxrlz3#

打开MySql命令行客户端,以root用户身份登录,然后键入

mysql> SHOW VARIABLES LIKE "secure_file_priv";

这将向您显示MySql访问文件所使用的安全路径。

+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+

您可以将文件粘贴到该文件夹中,也可以将“secure_file_priv”变量值更改为“空字符串”,以便它可以从任何位置读取文件。

3zwjbxry

3zwjbxry4#

在Windows上,最根本的问题是MySql在默认情况下作为一个Windows服务在Network帐户下运行,这意味着服务器只能访问几个文件位置。因此,要使load_file工作,文件必须放在服务器上一个服务可以读取的文件夹中。似乎没有关于这方面的文档。在我的调查中,唯一可以使用load_file的文件夹是C:\ProgramData\MySQL\MySQL Server 8.0\Uploads
运行查询以测试负载...

select load_file('C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\1.txt') ;

注意在窗口中必须使用\或/来分隔路径元素。如果失败,则返回NULL,否则返回文件的内容。
现在假设有一个名为db.image的表,其中包含source和image列。Source是character,image是blob。

insert into db.image (source,image) values ('a.jpg',load_file('c:/programdata/mysql/mysql server 8.0/uploads/a.jpg'));
kb5ga3dv

kb5ga3dv5#

直接存储,无需文件夹名称,例如-

create table myimg(id int, image mediumblob);

insert into myimg values(101, load_file("E://xyz.png"));

相关问题