6

これは私の完全なスクリプトです。

ディレクトリ内のファイルからデータを収集し、mysql にロードする rake タスクを作成しようとしています。

local-infile = 1 を修正しました。何も機能しません。エラーが表示されるだけです

namespace :db do
  namespace :load do
    desc "Load Properties into DB"
    task :properties => :environment do
      Mysql2::Client.default_query_options[:connect_flags] |= Mysql2::Client::LOCAL_FILES
      @files = Dir.entries("db/property_website_scripts/")
      connection = ActiveRecord::Base.connection()

      for file in @files
        next if file == "." || file == ".."
        sql = "LOAD DATA LOCAL INFILE '#{Rails.root}/db/property_website_scripts/#{file}'
               INTO TABLE properties
               FIELDS TERMINATED BY '|'
               LINES TERMINATED BY '\r\n'
               (property_type,property_for,city,state,country......);"

        connection.execute(sql)
      end

      #updating created at and updated at
      Property.update_all({:created_at => Time.now, :updated_at => Time.now}, "created_at IS NULL")
    end
  end
end
4

2 に答える 2

5

この投稿の解決策は私にとってはうまくいきました:レールからリモートmysqlにデータをロードするためのlocal-infileの有効化

これを追加database.yml

local_infile: true

于 2015-09-23T08:47:54.070 に答える
0

突然0.3.11、 gem のバージョンで同じエラーが発生します。mysql2私はそのバージョンをしばらく使用しているので、別のgemとの依存関係の問題であると思います. version にアップグレードしてみて0.3.12b5ください。これで修正されました。

于 2013-02-19T18:20:58.920 に答える