加载数据infile不允许MariaDB

时间:2017-12-22 10:45:19

标签: php mysql wordpress mariadb bulkinsert

我创建了一个PHP脚本,用于将CSV文件中的帖子导入WordPress网站。

为此,我首先将帖子批量导入WP网站数据库的表格,然后PHP脚本创建帖子。 我使用的批量插入MYSQL查询如下:

load data local infile '/var/www/vhosts/sitenamehere.test/test.csv' into table test_table character set latin1 fields terminated by ';' lines terminated by '\r\n' ignore 1 lines;

当我从服务器运行脚本时,出现以下错误:

  
    

"对于查询加载数据本地infile,此MariaDB版本不允许使用该命令..."

  

只有当我从服务器执行脚本时才会出现问题,事实上如果我从phpMyAdmin运行相同的查询,它就可以导入文件了。

由于我的脚本不仅导入而且还更新帖子,因此目的是创建一个cron作业,以便脚本每天执行多次。显然,如果我一直遇到同样的错误,这是不可能的。

我尝试添加:

  • local-infile=1部分[client]以及[mysqld]
  • 部分下的my.cnf
  • mysql.allow_local_infile=On部分下的[mysql]my.cnf
  • 位于mysql.allow_local_infile=On的{​​{1}} [MySQLi]部分下的php.ini

但没有任何帮助。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

指南位于 https://mariadb.com/kb/en/library/load-data-infile/

  

如果将local_infile系统变量设置为0,则尝试执行LOAD DATA LOCAL的操作将失败,并显示一条错误消息。

最好的选择是更改正在使用的my.ini文件。

此外,使用的数据库用户需要FILE特权。

答案 1 :(得分:0)

要加载本地文件,必须将connect添加到MySQL / MariaDB服务器连接字符串中。

如果使用类似LOAD LOCAL INFILE命令的命令,则将AllowLoadLocalInfile=true;添加到命令本身,它应该可以工作。

在两个服务器的最新版本中,默认情况下均禁用此功能,并且仅在必要时启用。