在 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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
How-to Install VMware Tools on Debian Stretch 9 32/64bit Linux+GNU
大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载