MySQL: load data infile ではまった(local指定) @ Ubuntu
いつもは、以下のようにload dataしている。
上のコマンドは、Mac上のMySQL(macports mysql5 @5.1.53)で実行したのですが、
これをUbuntuのMySQL(バージョン: 5.1.49-1ubuntu8.1)で実行すると
エラーになるので、原因を調査。
というエラーになります。 FILE権限ないのかと思ったけど、
rootでもエラーになるのでほとほと困ってましたが、ようやく原因が判明。
Bug #244406 in mysql-dfsg-5.0 (Ubuntu): “ File load data infile'file-name' fails”
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.5 LOAD DATA INFILE 構文
LOCALをつけなさい、ってことですが、必須パラメータなんすかね。
LOCAL以外のファイルを読みたい要望は個人的にはないので、
これからはLOCALをちゃんと指定しようと思う。
mysql> truncate table inttest;
Query OK, 0 rows affected (0.00 sec)
mysql> desc inttest;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id1 | int(10) unsigned | NO | | NULL | |
| id2 | int(10) unsigned | NO | | NULL | |
+-------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> load data infile '/tmp/test.tsv' into table inttest;
Query OK, 2 rows affected (0.00 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from inttest;
+-----+-----+
| id1 | id2 |
+-----+-----+
| 1 | 10 |
| 2 | 20 |
+-----+-----+
2 rows in set (0.00 sec)
上のコマンドは、Mac上のMySQL(macports mysql5 @5.1.53)で実行したのですが、
これをUbuntuのMySQL(バージョン: 5.1.49-1ubuntu8.1)で実行すると
エラーになるので、原因を調査。
mysql> load data infile '/tmp/test.tsv' into table inttest;
ERROR 29 (HY000): File '/tmp/test.tsv' not found (Errcode: 13)
というエラーになります。 FILE権限ないのかと思ったけど、
rootでもエラーになるのでほとほと困ってましたが、ようやく原因が判明。
Bug #244406 in mysql-dfsg-5.0 (Ubuntu): “ File load data infile'file-name' fails”
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.5 LOAD DATA INFILE 構文
mysql> load data LOCAL infile '/tmp/test.tsv' into table inttest;
Query OK, 2 rows affected (0.06 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
LOCALをつけなさい、ってことですが、必須パラメータなんすかね。
LOCAL以外のファイルを読みたい要望は個人的にはないので、
これからはLOCALをちゃんと指定しようと思う。