FEHLER: Das Laden lokaler Daten ist deaktiviert - dies muss sowohl auf der Client- als auch auf der Serverseite aktiviert sein

11

Ich verstehe die Antworten, die andere auf ähnliche Fragen gegeben haben, nicht, außer den offensichtlichsten, wie der folgenden:

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)

Damit meine ich, dass der genaue Code bereitgestellt wurde. Ich würde mich sehr freuen, wenn mich jemand Schritt für Schritt durch das führen könnte, was ich tun muss, um lokale Daten auf der "Client" -Seite und der "Server" -Seite zu aktivieren. Es scheint, als hätte ich lokale Daten auf der Clientseite aktiviert, aber ich weiß nicht, welche Anweisungen ich meinem Computer geben muss, um die "Serverseite" zu aktivieren. Ich bin überhaupt nicht technisch versiert und möchte nur an den Punkt gelangen, an dem die Daten in die MySQL-Workbench hochgeladen wurden.

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)
;

Ich möchte nur in der Lage sein, eine CSV-Datei über die Befehlszeilen-Shell in MySQL zu importieren.

so frustriert
quelle
Beantwortet das deine Frage? MySQL:
Aktivieren Sie das

Antworten:

8

Wenn die LOCAL-Funktion auf Server- oder Clientseite deaktiviert ist, erhält ein Client, der versucht, eine LOAD DATA LOCAL-Anweisung auszugeben, die folgende Fehlermeldung:

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

Ich habe das gleiche Problem festgestellt, als ich die Textdatei pet.txt nach einem Tutorial von MySQL in die Haustier-Tabelle laden wollte: https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html

Nachdem ich online gesucht hatte, habe ich es folgendermaßen behoben:

  1. Legen Sie die globalen Variablen mit diesem Befehl fest:
mysql> SET GLOBAL local_infile=1;
Query OK, 0 rows affected (0.00 sec)
  1. Beenden Sie den aktuellen Server:
mysql> quit
Bye
  1. Stellen Sie mit der Systemvariablen local-infile eine Verbindung zum Server her:
mysql --local-infile=1 -u root -p1

Diese Variable steuert die serverseitige LOCAL-Fähigkeit für LOAD DATA-Anweisungen. Abhängig von der Einstellung local_infile verweigert oder erlaubt der Server das Laden lokaler Daten durch Clients, für die LOCAL auf der Clientseite aktiviert ist. Starten Sie mysqld mit deaktivierter bzw. aktivierter Datei local_infile, um den Server explizit zu veranlassen, LOAD DATA LOCAL-Anweisungen abzulehnen oder zuzulassen (unabhängig davon, wie Client-Programme und -Bibliotheken zur Erstellungszeit oder zur Laufzeit konfiguriert sind). local_infile kann auch zur Laufzeit festgelegt werden.

  1. Verwenden Sie Ihre Datenbank und laden Sie die Datei in die Tabelle:
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)

Funktioniert es?

Verweise:

https://dev.mysql.com/doc/refman/8.0/de/load-data-local-security.html https://dev.mysql.com/doc/refman/8.0/de/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

Zhi-Qiang Ni
quelle
Das funktioniert bei mir :-)
Bryon Nicoson
2

my.cnf Datei:

[client]  
local_infile=1

Aus der offiziellen MySQL 8.0-Dokumentation .

Breky
quelle
MySQL-Dokumente sind nicht sehr klar. Sie legen [Client] fest, wie die Server- und die Client-Seite richtig herauskommen sollen. Unter Ubuntu mit MySql 8 besteht die Datei my.cnf nur aus zwei Verzeichnissen, die auf /etc/mysql/mysql.conf.d und /etc/mysql/conf.d verweisen. Ich versuche die Einstellung in der Datei mysql.conf.d / mysql.cnf. Aber ehrlich gesagt, wie kann es sinnvoll sein, einen einzelnen Ordner mit gleichnamigen "mysql.cnf" -Dateien in der obersten Ebene und in jedem Unterverzeichnis zu haben. Und keine Änderung für Server?
Pauljohn32
1
Suchen Sie die Konfigurationsdatei mit dem Tag [mysqld], die verwendet wird. Fügen Sie dieselbe globale Konfiguration unter diesem Tag sowie unter dem Tag [client] hinzu.
Adam Friedman
@AdamFriedman Danke für den Punkt! /etc/mysql/mysql.conf.d/mysqld.cnfDie Serverkonfigurationsdatei für mich war in und ich habe die Datei local_infile = 1 unter [mysqld] hinzugefügt und sie funktioniert jetzt! Ich kann diese Antwort derzeit nicht bearbeiten, da die Bearbeitungswarteschlange voll ist, aber ohne das mysqld-Paar unvollständig ist.
Aderchox