LOAD_FILE返回NULL

时间:2013-09-10 14:14:37

标签: mysql null mysql-loadfile

我正在尝试将图像插入MySQL服务器。我做了一些研究,看起来最好的方法是通过LOAD_FILE()。但是,LOAD_FILE()始终返回null。我知道LOAD_FILE()有4个条件:

  1. 该文件必须位于服务器主机上
  2. 您必须指定文件的完整路径名,并且您必须具有FILE权限。
  3. 该文件必须可被所有人读取,其大小必须小于max_allowed_pa​​cket字节。
  4. 如果secure_file_priv系统变量设置为非空目录名,则要加载的文件必须位于该目录中。
  5. 我目前正在使用:

    select LOAD_FILE('/Users/pricedb/Desktop/FolderName/imageName');
    

    并返回NULL

    我已确认已授予用户所有权限。文件必须位于服务器主机上是什么意思?服务器正在我的本地计算机上运行,​​并且文件位于那里,这是否意味着我很擅长?

    任何建议都会受到高度赞赏,我不知道为什么它没有返回值。

5 个答案:

答案 0 :(得分:0)

这是我在Windows 7上的命令:

select load_file("C:/Program Files (x86)/MySQL/MySQL Workbench CE 6.0.7/images/hieuImages/a.jpg");

它有效! 您可能尝试将图像复制到该目录中,然后在mysql中再次选择。

答案 1 :(得分:0)

" FILE"是一种行政特权。 如果您说已授予所有权限,那么它是否也包括全局管理权限?

这里是语法http://dev.mysql.com/doc/refman/5.1/en/grant.html#grant-global-privileges,但我找到了#34; MySQL Workbench" GUI更有帮助。

也可以查看操作系统文件权限。

答案 2 :(得分:0)

我有同样的问题。

发现要加载的文件必须位于mysql / mariadb有权读取的文件夹位置。 可以进行配置,但是 data 文件夹已经具有访问权限。

就我而言,我将文件复制到数据文件夹:C:\ Program Files \ MariaDB 10.3 \ data 而且比起我用完整路径来称呼它:

select load_file('C:\\Program Files\\MariaDB 10.3\\data\\test.txt');

答案 3 :(得分:0)

使用MySQL Workbench 8.0:

  1. 在“结果网格”面板中,您可以看到行和列,右键单击将保存BLOB值的单元格(当前显示为NULL)。
  2. 在出现的上下文菜单中,选择第一项:在编辑器中打开值
  3. 在左下角有两个按钮。点击:加载...
  4. 浏览到您的图像文件。
  5. “二进制”选项卡填充了图像的二进制数据。
  6. 点击:应用。您将再次返回结果网格面板。注意NULL已被BLOB取代。
  7. 右键单击BLOB,然后再次选择在编辑器中打开值
  8. 您会在顶部找到一个新标签:图片。在这里您可以预览刚刚添加的图像。

问候!

答案 4 :(得分:0)

  1. 显示诸如“secure_file_priv”之类的变量;
  2. 在此目录中加载文件。
  3. select load_file('directory_from_1');