【问题标题】:LOAD_FILE returns NULLLOAD_FILE 返回 NULL
【发布时间】:2013-09-14 07:18:45
【问题描述】:

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

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

我目前正在使用:

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

它返回NULL

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

任何建议将不胜感激,我不知道为什么它没有返回值。

【问题讨论】:

  • 你要加载图片吗?
  • 是的,我正在加载 jpg。
  • 除了您应该将图像存储在 MySQL 数据库中之外,这样做的原因是什么?
  • 我正在创建一个允许用户查看和下载特定图像的应用程序。我需要一种显示图像的方法,除非他们被授权,否则不让用户实际下载它们。我当前的原型应用程序有 SQL 保存文件位置,然后应用程序使用这些位置来显示图像,但在最终版本中,客户端不会将图像放在他们的计算机上。如果不是通过将图像存储在 SQL 上,我还能如何允许用户查看图像? (PS,我对 SQL 很陌生,为什么将图像存储在服务器上是不好的做法?)
  • 您将图像存储在文件系统上。请阅读thisthis

标签: mysql null mysql-loadfile


【解决方案1】:

这是我在 Windows 7 上的命令:

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

它奏效了! 您可能会尝试将图像复制到该目录并在 mysql 中再次选择。

【讨论】:

    【解决方案2】:

    “文件”是一种管理权限。 当您说已授予所有权限时,是否也包括全局管理权限?

    这是http://dev.mysql.com/doc/refman/5.1/en/grant.html#grant-global-privileges 的语法,但我发现“MySQL Workbench”GUI 更有帮助。

    也检查操作系统文件权限。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。

      发现要加载的文件,需要在mysql/mariadb有权限读取的文件夹位置。 可以配置,但是data文件夹已经有访问权限了。

      就我而言,我将文件复制到数据文件夹:C:\Program Files\MariaDB 10.3\data 而不是我刚刚用完整路径调用它:

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

      【讨论】:

        【解决方案4】:

        使用 MySQL Workbench 8.0:

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

        您好!

        【讨论】:

          【解决方案5】:
          1. 显示“secure_file_priv”等变量;
          2. 在此目录中加载文件。
          3. select load_file('directory_from_1');

          【讨论】:

            猜你喜欢
            • 2011-06-04
            • 1970-01-01
            • 2018-02-05
            • 1970-01-01
            • 2020-06-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多