Страница 1 из 1

MySQL: LOAD DATA INFILE

Добавлено: 18 дек 2017, 11:59
ambrella
Понадобилось загрузить в таблицу данные из файла используя LOAD DATA INFILE, но при выполнении получаю ошибку:
Db The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
При то что в текущем конфигурационном файле MySQL 5.6 данная строка закомментирована по умолчанию:
#secure-file-priv = "%dprogdir%\\userdata\\temp"
Я подозреваю что где то глобально надо комментировать, но вот где?

На LOAD DATA LOCAL INFILE, вообще ругается что не поддерживается данной версией MySQL.

Re: MySQL: LOAD DATA INFILE

Добавлено: 18 дек 2017, 16:26
Максим
local-infile=0 еще есть.

Re: MySQL: LOAD DATA INFILE

Добавлено: 25 дек 2022, 00:12
prostors
на 8.0.30 ругается Db The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

пробовал комментировать указанное выше - ошибка остаётся

Re: MySQL: LOAD DATA INFILE

Добавлено: 25 дек 2022, 08:59
Максим
В шаблоне конфигурации PHP должно быть так:
[mysqli]

mysqli.allow_local_infile       = 1
...
В конфиге MySQL должно быть так:
[mysqld]

# General Settings

...
local_infile            = 1
...
secure_file_priv        = "%sprogdir%/userdata/temp/upload"
Если это PHP 8.1 и выше, то замените в шаблоне конфигурации PHP
;mysqli.local_infile_directory = ""
на
mysqli.local_infile_directory = "%sprogdir%/userdata/temp/upload"
При таких настройках LOAD DATA INFILE будет работать для файлов находящихся в папке /userdata/temp/upload, т.е. загруженных через PHP.

Эти настройки и так уже прописаны по умолчанию, кроме последней поправки для PHP 8.1.