LRI: Đang tải dữ liệu cục bộ bị tắt - điều này phải được bật ở cả phía máy khách và máy chủ


11

Tôi không hiểu câu trả lời mà người khác đã cung cấp cho các câu hỏi tương tự ngoại trừ những câu hỏi rõ ràng nhất, chẳng hạn như câu trả lời dưới đây:

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)

Bằng cách này, tôi có nghĩa là mã chính xác đã được cung cấp. Tôi đánh giá rất cao nếu ai đó có thể hướng dẫn tôi từng bước, những gì tôi cần làm để kích hoạt dữ liệu cục bộ ở phía "máy khách" và phía "máy chủ". Có vẻ như tôi đã kích hoạt dữ liệu cục bộ ở phía máy khách, nhưng tôi không biết tôi cần cung cấp hướng dẫn nào cho máy tính của mình để kích hoạt "phía máy chủ". Tôi hoàn toàn không am hiểu về công nghệ và tôi chỉ muốn có thể đi đến điểm mà dữ liệu đã được tải lên bàn làm việc của 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)
;

Tôi chỉ muốn có thể nhập tệp .csv vào MySQL bằng cách sử dụng shell dòng lệnh.


Điều này có trả lời câu hỏi của bạn không? MySQL: Kích hoạt thiết lập lại LOAD DATA LOCAL INFILE
danblack

Câu trả lời:


8

Nếu khả năng LOCAL bị vô hiệu hóa, ở phía máy chủ hoặc máy khách, máy khách cố gắng đưa ra câu lệnh LOAD DATA LOCAL nhận được thông báo lỗi sau:

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

Tôi đã gặp vấn đề tương tự khi tôi muốn tải tệp văn bản pet.txt vào bảng vật nuôi theo hướng dẫn của Mysql: https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html

Sau khi tìm kiếm trực tuyến, tôi đã sửa nó bằng các bước sau:

  1. đặt các biến toàn cục bằng cách sử dụng lệnh này:
mysql> SET GLOBAL local_infile=1;
Query OK, 0 rows affected (0.00 sec)
  1. thoát khỏi máy chủ hiện tại:
mysql> quit
Bye
  1. kết nối với máy chủ với biến hệ thống infile cục bộ:
mysql --local-infile=1 -u root -p1

Biến này kiểm soát khả năng LOCAL phía máy chủ cho các câu lệnh LOAD DATA. Tùy thuộc vào cài đặt local_infile, máy chủ từ chối hoặc cho phép tải dữ liệu cục bộ bởi các máy khách đã bật LỘC ở phía máy khách. Để rõ ràng khiến máy chủ từ chối hoặc cho phép các câu lệnh LOAD DATA LOCAL (bất kể các chương trình và thư viện máy khách được cấu hình như thế nào khi xây dựng hoặc thời gian chạy), hãy khởi động mysqld với local_infile bị vô hiệu hóa hoặc bật. local_infile cũng có thể được đặt trong thời gian chạy.

  1. sử dụng cơ sở dữ liệu của bạn và tải tệp vào bảng:
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)

Nó có hoạt động không?

Người giới thiệu:

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 # tùy chọn_cmake_enables_local_infile https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_local_infile


Điều này làm việc cho tôi :-)
Bryon Nicoson

2

my.cnf tập tin:

[client]  
local_infile=1

Từ tài liệu chính thức của MySQL 8.0 .


Tài liệu MySql không rõ ràng lắm. Bạn đặt [client], làm thế nào để làm cho cả phía máy chủ và phía máy khách xuất hiện đúng không? Trên Ubuntu với MySql 8, tệp my.cnf chỉ là một cặp thư mục đề cập đến /etc/mysql/mysql.conf.d và /etc/mysql/conf.d. Tôi đang thử cài đặt trong tệp mysql.conf.d / mysql.cnf. Nhưng, thành thật mà nói, làm thế nào có ý nghĩa khi có một thư mục duy nhất với các tệp cùng tên "mysql.cnf" ở cấp cao nhất và trong mỗi thư mục con. Và không có thay đổi cho máy chủ?
pauljohn32

1
Tìm bất kỳ tập tin cấu hình nào có thẻ [mysqld] và đang được sử dụng. Thêm cùng một cấu hình toàn cầu dưới thẻ đó cũng như dưới thẻ [client].
Adam Friedman

@AdamFriedman Cảm ơn bạn đã quan tâm! Tệp cấu hình máy chủ cho tôi đã được cài đặt /etc/mysql/mysql.conf.d/mysqld.cnfvà tôi đã thêm local_infile = 1 trong [mysqld] và hiện đang hoạt động! Hiện tại tôi không thể chỉnh sửa câu trả lời này vì hàng đợi chỉnh sửa đã đầy, nhưng nó không đầy đủ nếu không có cặp mysqld.
aderchox
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.