【问题标题】:Run a .sql file in rake task在 rake 任务中运行 .sql 文件
【发布时间】:2020-06-18 06:37:12
【问题描述】:

我正在尝试开始使用 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 新手,无法找出问题所在。任何帮助表示赞赏!

【问题讨论】:

  • 缺少实际的错误消息。请在 te CLI 中发布命令和整个错误输出。
  • 有一些组织限制,因此我无法发布:( 但是,我得到的错误是在我发布的堆栈跟踪的第一个跟踪错误语句中。你是什么'正在寻找究竟?

标签: ruby-on-rails ruby activerecord rake


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2014-12-05
    相关资源
    最近更新 更多