Как мне включить локальную серверную часть infile?

#python #mysql

#python #mysql

Вопрос:

Во-первых, я новичок в Stack Overflow, поэтому ценю любые предложения о том, как улучшить мой вопрос, задаваемый в дополнение к любым потенциальным решениям.

Я использую MySQL и Python (с Pycharm IDE), и мне нужно загрузить данные из csv-файла в таблицу в базе данных, которую я уже создал с помощью MySQL Workbench (я не использую инструмент импорта Workbench, потому что он слишком медленный, и мне все равно нужно будет делать это из Pycharm в будущем).

Я могу успешно подключиться к своей базе данных из PyCharm и просматривать таблицы и т. Д. Затем я использую следующее, чтобы попытаться загрузить данные из моего CSV-файла —

 mycursor = db.cursor()
query = "LOAD DATA LOCAL INFILE 'file path' INTO TABLE scores FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (ID, Date, Score)"
mycursor.execute(query)
  

Я получил сообщение об ошибке, когда сделал это, и увидел из другого вопроса о переполнении стека, что мне нужно включить параметр ‘local_infile’, поэтому я это сделал (я вижу, что он включен).

Тем не менее, я все еще получаю сообщение об ошибке ниже, когда пытаюсь импортировать свои данные, и из чтения при переполнении хранилища я полагаю, что это связано с тем, что мне также нужно включить ‘local_infile’ на стороне сервера, но я не уверен, как это сделать?

Ошибка, которую я сейчас получаю при попытке загрузить свои данные, выглядит следующим образом —

mysql.connector.errors.Ошибка программирования:

3948 (42000): загрузка локальных данных отключена; это должно быть включено как на стороне клиента, так и на стороне сервера

Комментарии:

1. Вы добавили allow_local_infile=True к вызову connect? Или вы включили это в настройках сервера?

2. Вы должны установить local_infile глобальную переменную (с помощью SET GLOBAL или в сервере my.ini ) для включения LOAD DATA LOCAL INFILE на стороне сервера…

3. … и вы должны указать --local-infile and --load-data-local-dir в командной строке клиента или в соответствии с параметрами в разделе [mysql] моего. ini , используемый вашим клиентом, или соответствующим образом настройте программное обеспечение для подключения.

4. для local_infile установлено значение ON . Сейчас я пытаюсь выполнить загрузку из клиента командной строки MySQL и получаю сообщение об ошибке «ОШИБКА 2068 (HY000): ЗАГРУЗКА ДАННЫХ Запрос ЛОКАЛЬНОГО файла INFILE отклонен из-за ограничений на доступ». Я нашел файл my.ini и добавил local-infile = 1 под битом [mysqld], а также попытался загрузить файлы из скрытой папки «Uploads», но все равно получаю эту ошибку