我尝试添加行到my.cnf
[mysql] infile = 1 [mysqld] infile = 1
SHOW VARIABLES LIKE "%infile"在mysql中显示为true。
但LOAD DATA不起作用。 我尝试了一个PHP脚本和phpMyAdmin。
它只有在我使用--allow-infile标志从命令行启动mysql时才有效
mysql --local-infile -u root -p db_name
但是这并没有解决PHP的问题。
我终于用一种可笑的简单方法解决了这个问题。 我见过这么多的post关于这个问题,但唯一的解决scheme,我发现工作是一个有点隐藏在一个计算器后 。 事实certificate,这个问题可以在连接时解决(这是有道理的):
mysql_connect(HOST,USER,PASS,false,128);
答案就在手册页上 ,事实certificate。
唯一我仍然不明白的是为什么在我的新的Ubuntu安装中这是必须的,但是在其他任何系统,Ubuntu或者CentOS上都不是什么问题。
我还应该补充一点,上面的方法可能比其他方法更具可移植性,因为你要在代码中而不是在configuration文件中设置连接types。
在/etc/my.cnf中有一个允许LOAD DATA LOCAL INFILE查询的选项:
local-infile = 1
请记住在应用更改后重新启动MySQL。
对于Ubuntu用户,我find了解决scheme。 此问题与AppArmor MySQL LOAD DATA INFILE – AppArmor问题有关