没有 Rails 的 ActiveRecord:无法运行迁移

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

我有一个遗留项目需要锁定到 ActiveRecord 5.2。它不运行 Rails。

我在项目树中的自定义路径中进行了数据库迁移。我正在尝试运行迁移但遇到错误。这就是我用来运行迁移的代码:

def self.migrations_path
        File.expand_path('../schema', __FILE__)
      end

ActiveRecord::MigrationContext.new(migrations_path).migrate(5.2)

但我收到以下错误:

Failure/Error: ActiveRecord::MigrationContext.new(migrations_path).migrate(5.2)

ArgumentError:
  wrong number of arguments (given 5, expected 1..4)

在 ActiveRecord 5.2(版本实际上是 5.2.8.1)上运行没有 Rails 的迁移的正确方法是什么?感谢您的帮助。

编辑以包含完整的堆栈跟踪:

加载 ./spec/spec_helper.rb 时发生错误。 失败/错误:ActiveRecord::MigrationContext.new(migrations_path).migrate(5.2)

ArgumentError:
  wrong number of arguments (given 5, expected 1..4)
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/connection_adapters/abstract/schema_definitions.rb:263:in `initialize'
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/connection_adapters/sqlite3/schema_statements.rb:60:in `new'
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/connection_adapters/sqlite3/schema_statements.rb:60:in `create_table_definition'
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:291:in `create_table'
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/schema_migration.rb:29:in `create_table'
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/migration.rb:1187:in `initialize'
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/migration.rb:1036:in `new'
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/migration.rb:1036:in `up'
# /usr/share/rvm/gems/rsongkickuby-3.0.1/gems/activerecord-5.2.8.1/lib/active_record/migration.rb:1017:in `migrate'
# ./lib/mycompany/oauth2/schema.rb:7:in `migrate'
# ./spec/spec_helper.rb:32:in `<top (required)>'

我尝试升级到 ActiveRecord 6.0,但现在出现以下错误:

Failure/Error: ActiveRecord::MigrationContext.new(migrations_path).migrate(6.0)

ArgumentError:
  wrong number of arguments (given 1, expected 2)
# /usr/share/rvm/gems/ruby-3.0.1/gems/activerecord-6.0.0/lib/active_record/migration.rb:1028:in `initialize'
# ./lib/mycompany/oauth2/schema.rb:7:in `new'
# ./lib/mycompany/oauth2/schema.rb:7:in `migrate'
# ./spec/spec_helper.rb:32:in `<top (required)>'
ruby activerecord rails-migrations
© www.soinside.com 2019 - 2024. All rights reserved.