エラー:ローカルデータの読み込みが無効になっています-これはクライアント側とサーバー側の両方で有効にする必要があります


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ワークベンチにアップロードされた時点に到達できるようにしたいだけです。

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にインポートできるようにしたいだけです。


これはあなたの質問に答えますか?MySQL:LOAD DATA LOCAL INFILEリセットを有効にする
danblack

回答:


8

LOCAL機能が無効になっている場合、サーバー側またはクライアント側のいずれかで、LOAD DATA LOCALステートメントを発行しようとするクライアントは、次のエラーメッセージを受け取ります。

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

Mysqlのチュートリアルに従って、テキストファイルpet.txtをpetテーブルにロードするときに、同じ問題に遭遇しました: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. local-infileシステム変数を使用してサーバーに接続します。
mysql --local-infile=1 -u root -p1

この変数は、LOAD DATAステートメントのサーバー側のLOCAL機能を制御します。local_infile設定に応じて、サーバーは、クライアント側でLOCALが有効になっているクライアントによるローカルデータの読み込みを拒否または許可します。サーバーが明示的にLOAD DATA LOCALステートメントを拒否または許可するようにするには(ビルド時または実行時のクライアントプログラムとライブラリの構成方法に関係なく)、それぞれlocal_infileを無効または有効にしてmysqldを起動します。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の公式ドキュメントから


MySqlドキュメントはあまり明確ではありません。[クライアント]を設定しましたが、サーバー側とクライアント側の両方を正しく表示するにはどうすればよいですか?MySql 8を備えたUbuntuでは、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[mysqld]の下にlocal_infile = 1を追加しました。編集キューがいっぱいのため、現在この回答を編集することはできませんが、mysqldペアがないと完了しません。
aderchox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.