SQLステートメントを実行するときのエラー
-
25-10-2019 - |
質問
私は開発しています レール v2.3.2 with mysql v5.1 の上 ubuntu 機械。
mysql データディレクトリはです /var/lib/mysql/
私は持っています test.dat
上にあるファイル /var/lib/mysql/tmp/test.dat
からデータをロードしたいと思います test.dat
データベーステーブルにファイルするので、次のSQLステートメントを実行します。 レーキタスク:
namespace :db do
task :do_something => :environment do
sql="LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'
INTO TABLE myapp.cars;"
ActiveRecord::Base.connection.execute(sql);
end
end
しかし、次のエラーが発生しました。
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/
によってのみアクセスできます ルートユーザー, 、しかし、それが理由かどうかはわかりません。
解決
試す LOAD DATA LOCAL INFILE ...
.
他のヒント
あなたが言及しているとき、.datにはルートアクセス許可があります、
644に変更するのに役立つかもしれません
または、RubyでMySQLを接続するユーザーアカウントにファイルの特権があることを確認してください
select File_priv from mysql.user where Host=??? and user=???;
所属していません StackOverflow