質問

私は開発しています レール 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=???;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top