Jeśli funkcja LOCAL jest wyłączona po stronie serwera lub klienta, klient, który próbuje wydać instrukcję LOAD DATA LOCAL, otrzymuje następujący komunikat o błędzie:
ERROR 3950 (42000): Loading local data is disabled; this must be
enabled on both the client and server side
Spotkałem się z tym samym problemem, gdy chcę załadować plik tekstowy pet.txt do tabeli zwierząt zgodnie z samouczkiem Mysql:https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html
Po przeszukaniu online naprawiłem to, wykonując następujące czynności:
- ustaw zmienne globalne za pomocą tego polecenia:
mysql> SET GLOBAL local_infile=1;
Query OK, 0 rows affected (0.00 sec)
- zakończ obecny serwer:
mysql> quit
Bye
- połącz się z serwerem za pomocą lokalnej zmiennej systemowej pliku:
mysql --local-infile=1 -u root -p1
Ta zmienna steruje funkcją LOCAL po stronie serwera dla instrukcji LOAD DATA. W zależności od ustawienia local_infile, serwer odmawia lub zezwala na ładowanie danych lokalnych przez klientów, którzy mają włączoną opcję LOCAL po stronie klienta. Aby wyraźnie spowodować, że serwer odmówi lub zezwoli na instrukcje LOAD DATA LOCAL (niezależnie od konfiguracji programów i bibliotek klienta podczas kompilacji czasu lub czasu wykonywania), uruchom mysqld z odpowiednio wyłączonym lub włączonym local_infile. local_infile można również ustawić w czasie wykonywania.
- użyj swojej bazy danych i załaduj plik do tabeli:
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)
Czy to działa?
Referencje:
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