ОШИБКА: загрузка локальных данных отключена - она ​​должна быть включена как на стороне клиента, так и на стороне сервера.

11

Я не понимаю ответы, которые другие давали на подобные вопросы, за исключением самых очевидных, таких как приведенный ниже:

mysql> SET GLOBAL local_infile=1;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+
1 row in set (0.01 sec)

Под этим я подразумеваю точный код. Я был бы очень признателен, если бы кто-то мог шаг за шагом объяснить мне, что мне нужно сделать, чтобы включить локальные данные на стороне «клиента» и «сервера». Кажется, что я включил локальные данные на стороне клиента, но я не знаю, какие инструкции мне нужно дать моему компьютеру, чтобы включить «сторону сервера». Я совсем не разбираюсь в технологиях, и я просто хочу быть в состоянии добраться до точки, где данные были загружены в MySQL Workbench.

ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
CREATE TABLE toys (
uniq_id VARCHAR(1000),
product_name VARCHAR(1000),
manufacturer VARCHAR(1000),
price VARCHAR(1000),
number_available_in_stock VARCHAR (1000),
number_of_reviews INT,
number_of_answered_questions INT,
average_review_rating VARCHAR(1000),
amazon_category_and_sub_category VARCHAR(1000),
customers_who_bought_this_item_also_bought VARCHAR(1000),
description VARCHAR(1000),
product_information VARCHAR(1000),
product_description VARCHAR(1000),
items_customers_buy_after_viewing_this_item VARCHAR(1000),
customer_questions_and_answers VARCHAR(1000),
customer_reviews VARCHAR(1000),
sellers VARCHAR(1000)
);

LOAD DATA LOCAL INFILE ‘/Users/BruddaDave/Desktop/amazonsample.csv INTO TABLE toys
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n
IGNORE 1 LINES
(uniq_id, product_name, manufacturer, price, number_available_in_stock, number_of_reviews, number_of_answered_questions, average_review_rating, amazon_category_and_sub_category, customers_who_bought_this_item_also_bought, description, product_information, product_description, items_customers_buy_after_viewing_this_item, customer_questions_and_answers, customer_reviews, sellers)
;

Я просто хочу иметь возможность импортировать файл .csv в MySQL с помощью оболочки командной строки.

sofrustrated
источник
Отвечает ли это на ваш вопрос? MySQL: включить сброс
локальных

Ответы:

8

Если возможность LOCAL отключена, на стороне сервера или клиента клиент, который пытается выполнить оператор LOAD DATA LOCAL, получает следующее сообщение об ошибке:

ERROR 3950 (42000): Loading local data is disabled; this must be
enabled on both the client and server side

Я столкнулся с той же проблемой, когда хочу загрузить текстовый файл pet.txt в таблицу pet, следуя инструкции Mysql: https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html.

После поиска в Интернете я исправил это с помощью следующих шагов:

  1. установите глобальные переменные с помощью этой команды:
mysql> SET GLOBAL local_infile=1;
Query OK, 0 rows affected (0.00 sec)
  1. выйти с текущего сервера:
mysql> quit
Bye
  1. подключиться к серверу с помощью локальной системной переменной:
mysql --local-infile=1 -u root -p1

Эта переменная управляет возможностью LOCAL на стороне сервера для операторов LOAD DATA. В зависимости от настройки local_infile сервер отклоняет или разрешает локальную загрузку данных клиентами, у которых на клиентской стороне включен LOCAL. Чтобы явно заставить сервер отклонять или разрешать операторы LOAD DATA LOCAL (независимо от того, как настроены клиентские программы и библиотеки во время сборки или выполнения), запустите mysqld с отключенным или включенным local_infile, соответственно. local_infile также может быть установлен во время выполнения.

  1. используйте вашу базу данных и загрузите файл в таблицу:
mysql> use menagerie
Database changed
mysql> load data local infile '/path/pet.txt' into table pet;
Query OK, 8 rows affected, 7 warnings (0.00 sec)

Это работает?

Ссылки:

https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options .html # option_cmake_enabled_local_infile https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_local_infile

Чжи-Цян Ни
источник
Это работает для меня :-)
Брайон Никосон
2

my.cnf файл:

[client]  
local_infile=1

Из официальной документации по MySQL 8.0 .

Breky
источник
Документы MySql не очень понятны. Вы устанавливаете [client], как сделать так, чтобы сторона сервера и сторона клиента вышли правильно? В Ubuntu с MySql 8 файл my.cnf представляет собой просто пару каталогов, ссылающихся на /etc/mysql/mysql.conf.d и /etc/mysql/conf.d. Я пытаюсь установить настройки в файле mysql.conf.d / mysql.cnf. Но, честно говоря, как может иметь смысл иметь одну папку с одноименными файлами «mysql.cnf» на верхнем уровне и в каждом подкаталоге. И никаких изменений для сервера?
pauljohn32
1
Найдите тот файл конфигурации, который имеет тег [mysqld] и используется. Добавьте тот же глобальный конфиг под этим тегом, а также под тегом [client].
Адам Фридман
@AdamFriedman Спасибо за точку! Файл конфигурации сервера для меня был в, /etc/mysql/mysql.conf.d/mysqld.cnfи я добавил local_infile = 1 в [mysqld], и он работает сейчас! В настоящее время я не могу отредактировать этот ответ, потому что очередь редактирования заполнена, но она не завершена без пары mysqld.
aderchox