Я изучаю MySQL документацию учебник . Пока это действительно здорово, но я столкнулся с проблемой. Шаг, где поясняется, как загрузить исходные данные таблицы из файла, не работает.
Ниже приведены шаги, которые я предпринял, в том числе глубокое погружение в документацию и попытка многих ответов на похожие вопросы (связанные), но все безрезультатно.
- Я погуглил ошибку и обнаружил в документации, что загрузка локальных данных представляет собой угрозу безопасности, поэтому ее необходимо включить. Я попытался этот ответ и этот ответ , который должен был использовать следующее при входе в систему MySQL:
# neither of these worked:
mysql -u [username] -p --local-infile
mysql -u [username] -p --local-infile=1
mysql --local-infile -u [username] -p
Возможно, когда я вхожу в систему с этой опцией я просто устанавливаю ее на стороне клиента, а не на сервере? Я действительно не знаю разницу.
Затем я еще немного покопался в документации и прочитал о переменной local_infile. В документах даже есть раздел под названием Включение или отключение локальной загрузки данных , в котором говорится о системной переменной с именем local_infile
, но не говорится о том, как ее включить или отключить.
Итак, в следующий раз я прочитал документацию о системных переменных сервера и о том, как я могу использовать:
mysqld --verbose --help
Это напечатало огромное количество текста, но я нашел строку, которая гласила:
Default options are read from the following files in the given order:
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MySQL\MySQL Server 8.0\my.ini C:\Program Files\MySQL\MySQL Server 8.0\my.cnf
Я подумал, что могу найти свою переменную local_infile
в один из этих файлов .ini
или .cnf
и измените его на 1 или True или что-то еще ... Однако, ни один из этих файлов не существует ни в одном из этих мест.
Используя
этот ответ или, более конкретно, комментарии к ответу, я нашел этот файл:
mysql.conf.sample
, в котором есть несколько переменных, но не
local_infile
, и не множество других были перечислены в распечатке с
mysqld --verbose
--help
. К этому файлу я добавил строки
[mysqld]
local_infile=1
Не повезло.
SET GLOBAL local_infile='ON'
, а затем
SHOW GLOBAL VARIABLES LIKE
local_infile` приводит к:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
До этого было OFF
. Но угадайте, что я все еще не могу загрузить две строки в базу данных из текстового файла. Shocker.
Я нашел
сообщение в блоге , в котором говорится, что файлы конфигурации могут находиться в каталоге
%PROGRAMDATA%/MySQL/MySQL Server 8.0
как
my.ini
. Конечно же, вот где это было. Я добавил
local-infile=1
в
[mysql]
и
[mysqld]
. Это все еще не работало, поэтому я попробовал
local-infile
и
local-infile=ON
(я видел, как все они использовались в различных принятых ответах). Ни один из них не работал.
Так что, как правило, документация абсолютно отстой, и я потерян. Но, по крайней мере, я провел тщательную проверку документов, поэтому педантичность SO удовлетворена, и я могу задать свой вопрос:
Как включить загрузку локальных данных по умолчанию?