GALAT: Memuat data lokal dinonaktifkan - ini harus diaktifkan di sisi klien dan server

11

Saya tidak mengerti tanggapan yang diberikan orang lain untuk pertanyaan serupa kecuali yang paling jelas, seperti di bawah ini:

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)

Maksud saya kode yang sebenarnya diberikan. Saya akan sangat menghargai jika seseorang dapat memandu saya, langkah demi langkah, apa yang harus saya lakukan untuk mengaktifkan data lokal di sisi "klien" dan "server". Sepertinya saya telah mengaktifkan data lokal di sisi klien, tetapi saya tidak tahu instruksi apa yang perlu saya berikan kepada komputer saya untuk mengaktifkan "sisi server". Saya tidak mengerti teknologi sama sekali, dan saya hanya ingin bisa sampai ke titik di mana data telah diunggah ke dalam meja kerja MySQL.

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

Saya hanya ingin dapat mengimpor file .csv ke MySQL menggunakan shell baris perintah.

sofrustrated
sumber
Apakah ini menjawab pertanyaan Anda? MySQL: Aktifkan reset LOAD DATA LOCAL INFILE
danblack

Jawaban:

8

Jika kemampuan LOCAL dinonaktifkan, di sisi server atau klien, klien yang mencoba mengeluarkan pernyataan LOAD DATA LOCAL menerima pesan galat berikut:

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

Saya bertemu dengan masalah yang sama ketika saya ingin memuat file teks pet.txt ke dalam tabel pet mengikuti tutorial dari Mysql: https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html

Setelah mencari online, saya memperbaikinya dengan langkah-langkah ini:

  1. atur variabel global dengan menggunakan perintah ini:
mysql> SET GLOBAL local_infile=1;
Query OK, 0 rows affected (0.00 sec)
  1. keluar dari server saat ini:
mysql> quit
Bye
  1. terhubung ke server dengan variabel sistem infile lokal:
mysql --local-infile=1 -u root -p1

Variabel ini mengontrol kemampuan LOKAL sisi-server untuk pernyataan LOAD DATA. Bergantung pada pengaturan local_infile, server menolak atau mengizinkan pemuatan data lokal oleh klien yang memiliki LOCAL diaktifkan di sisi klien. Untuk secara eksplisit menyebabkan server menolak atau mengizinkan pernyataan LOAD DATA LOCAL (terlepas dari bagaimana program klien dan pustaka dikonfigurasikan pada waktu pembuatan atau runtime), mulailah mysqld dengan local_infile yang dinonaktifkan atau diaktifkan, masing-masing. local_infile juga dapat diatur saat runtime.

  1. gunakan Database Anda dan muat file ke dalam tabel:
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)

Apakah itu bekerja?

Referensi:

https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html https://dev.mysql.com/doc/refman/8.0/id/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
sumber
Ini bekerja untuk saya :-)
Bryon Nicoson
2

my.cnf mengajukan:

[client]  
local_infile=1

Dari dokumentasi resmi MySQL 8.0 .

Breky
sumber
Dokumen MySql tidak begitu jelas. Anda mengatur [klien], bagaimana membuat sisi server dan sisi klien keduanya keluar kan? Di Ubuntu dengan MySql 8, file my.cnf hanyalah sepasang direktori yang merujuk ke /etc/mysql/mysql.conf.d dan /etc/mysql/conf.d. Saya mencoba pengaturan di file mysql.conf.d / mysql.cnf. Tapi, jujur, bagaimana masuk akal untuk memiliki satu folder dengan nama "mysql.cnf" yang sama di tingkat atas, dan di setiap sub direktori. Dan tidak ada perubahan untuk server?
pauljohn32
1
Temukan file konfigurasi mana pun yang memiliki tag [mysqld] dan sedang digunakan. Tambahkan konfigurasi global yang sama di bawah tag itu serta di bawah tag [klien].
Adam Friedman
@AdamFriedman Terima kasih untuk intinya! File konfigurasi server untuk saya ada di /etc/mysql/mysql.conf.d/mysqld.cnfdan saya menambahkan local_infile = 1 di bawah [mysqld] dan sekarang berfungsi! Saat ini saya tidak dapat mengedit jawaban ini karena antrian edit penuh, tetapi tidak lengkap tanpa pasangan mysqld.
aderchox