Ошибка #3948 - Loading local data is disabled

вопрос от Настя 26.02.2023 15:02

Хочу загрузить большой txt файл в mysql с помощью запроса:

LOAD DATA LOCAL INFILE '/large_data.txt' INTO TABLE temp_import
FIELDS TERMINATED BY ','

Получаю ошибку:

#3948 - Loading local data is disabled; this must be enabled on both the client and server sides

Что нужно исправить? Читала про настройку local-infile=1 , но не ясно, как применить ее в php? У меня нет доступа к настройкам Mysql.

Вопросы по теме MySQLMySQL 3 ответа

3 ответа

Правила ответов

Ваш ник: Аноним (вход на сайт)

Ваш email (не отобразится на сайте)

Оборачивайте код в тег [code][/code]
ответ от Аноним 26.02.2023 16:50

Есть 2 момента, которые стоит проверить.

1. Какая у вас версия PHP? Если последние версии 7.4 или 8.x, то обратите внимание на то, что PHP запретили такое на своей стороне в опции mysqli.allow_local_infile. Вот ссылка https://www.php.net/manual/en/mysqli.configuration.php

То есть, даже если настроете mysql, то скорее всего получите ошибку
#2000 - LOAD DATA LOCAL INFILE is forbidden, check mysqli.allow_local_infile

Вам нужно добавить в файл php.ini такой код:
mysqli.allow_local_infile = On

После чего перезапустить Apache, если вы его используете.

2. Проверьте, что стоит в поле local_infile на стороне mysql. Сделайте такой sql запрос, например в phpmyadmin:

show global variables like 'local_infile';

Вы получите сообщение, примерно как на фото ниже

Сделайте запрос
SET GLOBAL local_infile = true;

Теперь все должно заработать.

ответ от Аноним 26.02.2023 17:22

1. Уберите слово LOCAL из запроса.

2. Проверьте mysql опцию secure_file_priv

Если вы сами настраивали MySql, то по-умолчанию, ее значение равно NULL. Это значит, что вы не можете пользоваться загрузкой файлов.

Для проверки введите такой запрос:
SHOW VARIABLES LIKE "secure_file_priv"

Если в поле Value будет NULL, значит вам нужно добавить такое поле в ваш файл my.ini
secure_file_priv=""

После этого остановите и запустите mysql командами
net mysql stop
net mysql start

3. Проверьте путь к файлу. Если вы работаете в Windows, то путь должен быть такого вида:
C:/mysql/data/file.txt

Ваш файл может быть расположен в любом месте.

ответ от Аноним 26.02.2023 18:23

Сталкивался с такой же ошибкой в phpmyadmin. В итоге понял, что у них есть баг и даже если сделать все, что здесь ответили, то ошибка все равно будет. Так что, если у вас старая версия phpmyadmin, то обновитесь до последней. У меня была версия 5.0.x

Это касается вашего запроса с LOCAL, без него работает, если убрать NULL в опции secure_file_priv, как в ответе.