为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用LOAD_FILE将文件加载到MySQL Blob中?

如何使用LOAD_FILE将文件加载到MySQL Blob中?

繁花如伊 2019-11-20 09:58:13
我试图将文件加载到MySQL blob(在Mac上)中。我的查询是INSERT INTO MyTable VALUES('7', LOAD_FILE('Dev:MonDoc.odt'))没有错误出现,但文件未加载到Blob中。
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

该手册指出以下内容:


LOAD_FILE(文件名)


读取文件并以字符串形式返回文件内容。要使用此功能,文件必须位于服务器主机上,必须指定文件的完整路径名,并且必须具有FILE特权。该文件必须全部可读,并且其大小小于max_allowed_packet字节。如果将secure_file_priv系统变量设置为非空目录名称,则要加载的文件必须位于该目录中。


如果文件不存在或由于不满足上述条件之一而无法读取,则该函数返回NULL。


从MySQL 5.0.19开始,character_set_filesystem系统变量控制以文字字符串形式给出的文件名的解释。


mysql> UPDATE t

            SET blob_col=LOAD_FILE('/tmp/picture')

            WHERE id=1;

由此看来,在您的情况下,有不止一件事情可能是错误的...


您正在通过完整的路径吗?

权限设置正确吗?

函数返回什么?空值?

您是否尝试过手册中提供的查询?


查看完整回答
反对 回复 2019-11-20
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

我在Linux上遇到了同样的问题...


select load_file('/tmp/data.blob');

+-----------------------------+

| load_file('/tmp/data.blob') |

+-----------------------------+

| NULL                        |

+-----------------------------+

最终,在用户和组所有权更改为“ mysql”之后,我可以成功加载文件:


sudo chown mysql:mysql /tmp/data.blob


查看完整回答
反对 回复 2019-11-20
?
智慧大石

TA贡献1946条经验 获得超3个赞

我只是想补充一下我在测试中发现的警告:

使用时select load_file('/path/to/theFile.txt');,正在加载的文件必须在sql实例所在的计算机上

这很长时间以来一直困扰着我,因为我一直使用MySQL工作台将文件始终加载到我们的各种sql实例中,并且当使用诸如此类的命令时,LOAD DATA LOCAL INFILE 'C:/path/to/theFile.csv' INTO TABLE无论将文件从我的本地硬盘驱动器中轻松抓取并将其处理到表中,无论实际sql实例运行的位置。但是,该load_file命令似乎至少对我而言没有相同的行为(也许存在我不知道的local_load_file()命令)。MySQL似乎只允许它从运行sql实例的本地系统中查找文件。

因此,如果您像我一样,却无法弄清楚为什么load_file总是返回NULL,请不要担心...将文件上传到sql服务器实例,然后从查询浏览器使用该路径,一切都会很好。


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 1244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信