使っていますMySQL v5.1存在するUbuntuマシン。
MySQLデータディレクトリは/var/lib/mysql/
test.dat
次の場所にファイルがあります。/var/lib/mysql/tmp/test.dat
test.dat
ファイルのデータをデータベーステーブルにロードしようとしているので、次のSQL文を実行します。
LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'
INTO TABLE myapp.cars;
ただし、次のエラーが発生します。
Mysql2::Error: Can't get stat of '/var/lib/mysql/tmp/test.dat' (Errcode: 2): LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat
'
なぜですか? ?
ポリスチレン心に浮かぶ一つの/var/lib/mysql/
ことはrootユーザーしかし、それが理由なのかはよくわかりません。
答え1
$ ls -ld /var/lib/mysql
drwx------ 21 mysql mysql 4096 2011-11-18 14:07 /var/lib/mysql
はい、そのディレクトリに対する権限がありません(root:root
設定によって異なる場合があります)。使用:
sudo mysql -u mysqluser -e "LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat' INTO TABLE myapp.cars;"
または、ファイルをホームディレクトリ(または別の場所)にコピーしてchown
自分に送信してください。
答え2
ファイルが localhost にある場合は、次を使用します。
LOAD DATA LOCAL INFILE ...
変えるLOAD DATA INFILE
。
また、mysqlユーザーが読めるファイル権限を持ち、mysql rootとしてファイルを実行してください。
GRANT FILE ON *.* to <your_db_user_name>@localhost;