MySQL PHPconfiguration不允许LOAD DATA LOCAL INFILE

我尝试添加行到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问题有关