我创建了一个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
行但没有任何帮助。有什么想法吗?
答案 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;
添加到命令本身,它应该可以工作。
在两个服务器的最新版本中,默认情况下均禁用此功能,并且仅在必要时启用。