Назад | Перейти на главную страницу

Конфигурация MySQL PHP не позволяет ЗАГРУЗИТЬ ДАННЫЕ ЛОКАЛЬНЫЙ ИНФАЙЛ

Я пробовал добавлять строки в my.cnf

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

SHOW VARIABLES LIKE "%infile" отображает истину в mysql.

Но ЗАГРУЗИТЬ ДАННЫЕ не работает. Я пробовал это в сценарии PHP и в phpMyAdmin.

Это работает, только если я запускаю mysql из командной строки с --allow-infile флаг

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

Но это не решило проблему PHP.

Я, наконец, решил проблему, что казалось смехотворно простым способом. Я видел так много сообщений об этой проблеме, но единственное, что я нашел, работало, было то, которое было несколько скрыто в сообщение stackoverflow. Оказывается, проблема может быть решена во время подключения (что имеет смысл):

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

Ответ здесь, на страница руководства, оказывается.

Единственное, чего я до сих пор не понимаю, - почему это необходимо в моей новой установке Ubuntu, но никогда не было проблемой ни в какой другой системе, Ubuntu или CentOS.

Я также должен добавить, что вышеупомянутый метод, вероятно, более переносим, ​​чем другие методы, поскольку вы устанавливаете тип соединения в коде, а не в файле конфигурации.

Для пользователей Ubuntu я нашел решение. Эта проблема связана с AppArmor MySQL LOAD DATA INFILE - проблема с AppArmor

Существует возможность разрешить запрос LOAD DATA LOCAL INFILE в /etc/my.cnf:

local-infile = 1

Не забудьте перезапустить MySQL после применения изменений.