加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 多个数据库连接:在错误的数据库中查找schema_

发布时间:2020-12-17 04:14:34 所属栏目:百科 来源:网络整理
导读:我试图通过以下方式为我的一些迁移使用辅助数据库连接: # app/models/staging/migration.rbclass Staging::Migration ActiveRecord::Migration def self.connection ActiveRecord::Base.establish_connection(:staging_db).connection endend# db/migrate/t
我试图通过以下方式为我的一些迁移使用辅助数据库连接:
# app/models/staging/migration.rb
class Staging::Migration < ActiveRecord::Migration
    def self.connection
        ActiveRecord::Base.establish_connection(:staging_db).connection
    end
end

# db/migrate/<timestamp>_create_foo.rb
class CreateFoo < Staging::Migration
    ....
end

在我的database.yml中配置了staging_db连接.

当我运行rake db:migrate时,表foo在staging_db模式中正确创建,表schema_migrations在RAILS_ENV =开发连接中创建.但是db:migrate报告以下错误(后续迁移失败):

Table ‘staging_db.schema_migrations’
doesn’t exist

有没有办法告诉Staging :: Migration在当前的RAILS_ENV连接中查找schema_migrations表?

顺便说一句,我知道staging_db不是RAILS_ENV感知的事实.这对我来说很好,因为每个服务器都通过一个单独的database.yml来配置它的环境,而这个数据库不在我的仓库中.

解决方法

您应该在staging_db中首次迁移之前尝试执行此操作:
ActiveRecord::Base.connection.initialize_schema_migrations_table

这将在暂存数据库中创建模式迁移表.如果这不是你想要的,你将不得不操纵其他一些东西. schema_migrations_table_name确定哪个表包含迁移版本:

def schema_migrations_table_name
  Base.table_name_prefix + 'schema_migrations' + Base.table_name_suffix
end

因此,如果您定义了table_name_prefix,则会导致schema_migration_table查找登台数据库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读