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

我试图将文件加载到MySQL blob(在Mac上)中。


我的查询是


INSERT INTO MyTable VALUES('7', LOAD_FILE('Dev:MonDoc.odt'))

没有错误出现,但文件未加载到Blob中。


繁花如伊
浏览 1245回答 3
3回答

当年话下

该手册指出以下内容: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;由此看来,在您的情况下,有不止一件事情可能是错误的...您正在通过完整的路径吗?权限设置正确吗?函数返回什么?空值?您是否尝试过手册中提供的查询?

牛魔王的故事

我在Linux上遇到了同样的问题...select load_file('/tmp/data.blob');+-----------------------------+| load_file('/tmp/data.blob') |+-----------------------------+| NULL                        |+-----------------------------+最终,在用户和组所有权更改为“ mysql”之后,我可以成功加载文件:sudo chown mysql:mysql /tmp/data.blob

智慧大石

我只是想补充一下我在测试中发现的警告:使用时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服务器实例,然后从查询浏览器使用该路径,一切都会很好。
打开App,查看更多内容
随时随地看视频慕课网APP