在rake任务中运行.sql文件

问题描述 投票:0回答:1

我正在尝试开始使用Ruby代码库并致力于添加新的Rake任务。我正在尝试在连接的mySQL数据库上运行.sql文件。

namespace :db do
  task :seed do
    connection = ActiveRecord::Base.connection
    puts connection
    sql = File.read('./docker/seed/warehouse-b2b/addresses.sql')
    statements = sql.split(/;$/)
    ActiveRecord::Base.transaction do
      statements.each do |statement|
        connection.execute(statement)
      end
    end
  end
end

这里是我如何调用任务rake db:seed --trace。这是我得到的错误堆栈跟踪信息

Mysql2::Error: Query was empty: 
/usr/local/lib/ruby/gems/2.1.0/gems/activerecord-3.1.10.3/lib/active_record/connection_adapters/mysql2_adapter.rb:288:in `query'
/usr/local/lib/ruby/gems/2.1.0/gems/activerecord-3.1.10.3/lib/active_record/connection_adapters/mysql2_adapter.rb:288:in `block in execute'
/usr/local/lib/ruby/gems/2.1.0/gems/activerecord-3.1.10.3/lib/active_record/connection_adapters/abstract_adapter.rb:245:in `block in log'
/usr/local/lib/ruby/gems/2.1.0/gems/activesupport-3.1.10.3/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/usr/local/lib/ruby/gems/2.1.0/gems/activerecord-3.1.10.3/lib/active_record/connection_adapters/abstract_adapter.rb:240:in `log'
/usr/local/lib/ruby/gems/2.1.0/gems/activerecord-3.1.10.3/lib/active_record/connection_adapters/mysql2_adapter.rb:288:in `execute'
tasks/common_db_seed.rake:15:in `block (5 levels) in <top (required)>'
tasks/common_db_seed.rake:14:in `each'
tasks/common_db_seed.rake:14:in `block (4 levels) in <top (required)>'

Ruby的新手,无法解决问题。任何帮助表示赞赏!

ruby-on-rails ruby activerecord rake
1个回答
-1
投票

按照惯例,数据库播种必须在seeds.rb文件中完成

© www.soinside.com 2019 - 2024. All rights reserved.