1

I tried adding lines to my.cnf

[mysql]
infile = 1
[mysqld]
infile = 1

SHOW VARIABLES LIKE "%infile" displays true in mysql.

But LOAD DATA does not work. I tried it in a PHP script and in phpMyAdmin.

It only works if I start mysql from the command line with the --allow-infile flag

mysql --local-infile -u root -p db_name

But this did not solve the PHP problem.

Buttle Butkus
  • 1,719
  • 8
  • 32
  • 45

3 Answers3

2

I finally solved the issue in what seems like a ridiculously simple way. I've seen so many posts regarding this problem but the only solution I found that worked was one that was somewhat hidden in a stackoverflow post. It turns out the issue can be solved at connect time (which makes sense):

mysql_connect(HOST,USER,PASS,false,128);

The answer is right there on the manual page, it turns out.

The only thing I still don't understand is why this is necessary on my new Ubuntu install but has never been a problem on any other system, Ubuntu or CentOS.

I should also add that the above method is probably more portable than other methods, since you are setting the connection type in the code rather than in a config file.

Buttle Butkus
  • 1,719
  • 8
  • 32
  • 45
0

There is an option for allowing the LOAD DATA LOCAL INFILE query in /etc/my.cnf:

local-infile = 1

Remember to restart MySQL after applying the change.

priestjim
  • 659
  • 3
  • 8
  • Does not work, even after restart. See my own answer to my question for how I eventually solved it. Your solution may work for some people, though. – Buttle Butkus Nov 25 '12 at 09:39
  • 1
    According to the MySQL manual, LOCAL INFILE must be enabled on the server AND the client connecting to it. So it wouldn't suffice to just turn it on on the server, you would also have to enable it (as you did) on the client. – priestjim Nov 25 '12 at 12:01
0

For Ubuntu users i've found the solution. This problem is related to AppArmor MySQL LOAD DATA INFILE - AppArmor issue