Запустите файл. sql в грабли - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь начать работать с базой кода Ruby и работать над добавлением новой задачи Rake. Я пытаюсь запустить файл. sql в моей подключенной базе данных mySQL.

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, не может понять проблему. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 06 марта 2020

По договоренности, посев в базу данных должен выполняться в файле seed.rb

...