MySQL 8.0がインストールされたWindowsを使用しています。
私はすでにstackoverflowに投稿されているソリューションを確認しましたが、これらにはすぐに結果はありませんでした。
SET GLOBAL local_infile = 1;
を使用してグローバル変数を設定しました。このオプションは現在有効になっているようですが、MySQLは次のエラーをスローし続けます。
エラーコード:
- 使用されたコマンドは、このMySQLバージョンでは許可されていません
誰かがこの行動を改善するのを手伝ってくれる?
試してください:
ファイル:Z:\Path\To\MySQL\Files\my_file.csv
:
1,"a string"
2,"a string containing a , comma"
3,"a string containing a \" quote"
4,"a string containing a \", quote and comma"
MySQLコマンドライン:
Z:\>mysql
Enter password: **************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> DROP TABLE IF EXISTS `_`.`my_table`;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> CREATE TABLE IF NOT EXISTS `_`.`my_table` (
-> `col0` INT NOT NULL PRIMARY KEY,
-> `col1` VARCHAR(50) NOT NULL
-> );
Query OK, 0 rows affected (0.45 sec)
mysql> SHOW VARIABLES WHERE `variable_name` = 'secure_file_priv';
+------------------+-------------------------+
| Variable_name | Value |
+------------------+-------------------------+
| secure_file_priv | Z:\Path\To\MySQL\Files\ |
+------------------+-------------------------+
1 row in set (0.00 sec)
mysql> LOAD DATA LOCAL INFILE 'Z:\\Path\\To\\MySQL\\Files\\my_file.csv'
-> INTO TABLE `_`.`my_table`
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
ERROR 1148 (42000): The used command is not allowed with this MySQL version
mysql> SELECT @@GLOBAL.`local_infile`;
+-------------------------+
| @@GLOBAL.`local_infile` |
+-------------------------+
| 0 |
+-------------------------+
1 row in set (0.00 sec)
mysql> SET @@GLOBAL.`local_infile` := 1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@GLOBAL.`local_infile`;
+-------------------------+
| @@GLOBAL.`local_infile` |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)
mysql> LOAD DATA LOCAL INFILE 'Z:\\Path\\To\\MySQL\\Files\\my_file.csv'
-> INTO TABLE `_`.`my_table`
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
ERROR 1148 (42000): The used command is not allowed with this MySQL version
mysql> SELECT `col0`, `col1`
-> FROM `_`.`my_table`;
Empty set (0.00 sec)
mysql> exit
Bye
Z:\>mysql --local-infile=1
Enter password: **************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SELECT @@GLOBAL.`local_infile`;
+-------------------------+
| @@GLOBAL.`local_infile` |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)
mysql> LOAD DATA LOCAL INFILE 'Z:\\Path\\To\\MySQL\\Files\\my_file.csv'
-> INTO TABLE `_`.`my_table`
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
Query OK, 4 rows affected (0.19 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT `col0`, `col1`
-> FROM `_`.`my_table`;
+------+------------------------------------------+
| col0 | col1 |
+------+------------------------------------------+
| 1 | a string |
| 2 | a string containing a , comma |
| 3 | a string containing a " quote |
| 4 | a string containing a ", quote and comma |
+------+------------------------------------------+
4 rows in set (0.00 sec)
検索後に同じ問題が発生しました。クエリからローカルキーワードを削除することで問題を解決します。
SET GLOBAL local_infile = 1;
SHOW VARIABLES LIKE 'local_infile';
クエリが返す必要があります:ON
クエリは次のようになります。
load data infile 'C:\\CA_DRU_proj_2010-2060.csv'
into table pop_proj
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 lines;
ここからlocalキーワードを削除しましたが、正常に機能します。
2019年1月現在、これはMySQL Workbench 8.0.12の未解決のバグです。参照: https://bugs.mysql.com/bug.php?id=91891 。
「local_infile」グローバル変数が1に設定されている場合、CLIを介して同じコマンドを実行しても機能します。
SET @@ GLOBAL.local_infile = 1;
私はWindowsでMySQL 8.0.19を使用して、同様の問題を扱ってきました。 LOCALキーワードを使用せず、Windowsサービスマネージャー(エクスプローラーのタスクバーに「Services」と入力)を使用して、MySQL80を右クリックし、[プロパティ]を選択して、[ログオン]タブで[ログオン]の値をローカルシステムアカウント。