【问题标题】:mysql 5.7 load_file does not work when running on Debian Stretch在 Debian Stretch 上运行时,mysql 5.7 load_file 不起作用
【发布时间】: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 @.

标签: mysql insert debian blob


【解决方案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 文件重新定位到该目录,再次设置所有权和组,瞧,它适用于简单的选择和所需的插入命令。非常感谢,亚瑟·塞拉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多