在 Debian Stretch 上运行时,mysql 5.7 load_file 不起作用

Posted

技术标签:

【中文标题】在 Debian Stretch 上运行时,mysql 5.7 load_file 不起作用【英文标题】:mysql 5.7 load_file does not work when running on Debian Stretch 【发布时间】:2021-11-17 01:40:32 【问题描述】:

我无法让 load_file 为 mysql 5.7 上的 mediumtext 列正常工作。我创建了带有非空属性的 attach2 列的表。插入命令“

    insert into attachments (user_id, prop_id, attach2)  values(2, 10,
         LOAD_FILE('/tmp/advantagesSocial.pdf'));" 

导致“错误 1048 (23000):列 'attach2' 不能为空”。

当我使用 load_file 执行选择语句时:“select load_file(/tmp/advantagesSocial.pdf');”我得到以下信息:

        mysql> select load_file('/tmp/advantagesSocial.pdf');
    +-------------------------------------------+
    | load_file('/tmp/advantagesSocial.pdf')    |
    +-------------------------------------------+
    | NULL                                      |
    +-------------------------------------------+

尝试将 load_file 用于简单文本文件时,我得到了相同的结果。

帮助!!!请!!!

【问题讨论】:

那个文件里有什么? 检查:"如果文件不存在或由于不满足上述条件之一而无法读取,则函数返回NULL。",见@987654321 @. 【参考方案1】:

您可以检查变量“secure_file_priv”; 此变量用于限制数据导入和导出操作的影响,例如由 LOAD DATA 和 LOAD_FILE() 函数执行的操作。 Mysql> 显示全局变量,例如 '%secure%';

【讨论】:

我正在运行 Debian Stretch (9) 并且一直在运行“mariabdb”。我研究了这个问题,并遇到了很多对“secure_file_priv”变量的引用。在我的 mariadb 上它没有设置。我尝试设置它,它仍然无法正常工作。我还确保它也归“mysql”所有者和组所有。还是不行....我调查了 mariadb 是否使用其他命令加载 blob 并出现干涸,所以最终我决定卸载 mariadb 并退回到 mysql 5.7。 我忘记检查 5.7 下的“secure_file_priv”。我刚刚检查了一下,发现它设置为:'/var/lib/mysql-files'。所以我将我想要的 pdf 文件重新定位到该目录,再次设置所有权和组,瞧,它适用于简单的选择和所需的插入命令。非常感谢,亚瑟·塞拉

以上是关于在 Debian Stretch 上运行时,mysql 5.7 load_file 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Debian stretch更换国内源

How-to Install VMware Tools on Debian Stretch 9 32/64bit Linux+GNU

大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载

linux/Deepin /Debian 9 Stretch安装Wine

debian 9 stretch安装docker

从 Debian Stretch 升级到 Buster 后出现 OCS 错误