为什么我的辅助数据库没有连接到生产环境?

时间:2019-01-28 11:29:32

标签: ruby-on-rails postgresql

我有一个Ruby On Rails应用程序,它同时使用两个数据库。这些数据库之一总是相同的,但是如果您选择其他项目,则另一个数据库会动态更改。

我每个都有一个.yml数据库配置文件:

MAINdb.yml(从未更改)

project_1.yml

project_2.yml

...

project_n.yml

如果更改项目,则会读取新的.yml并在运行时更改数据库连接。

.yml示例:

  default: &default
  adapter: postgresql
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 30 } %>
  encoding: unicode
  username: xxx
  password: xxx
  timeout: 2400
  port: 5432

development:
  <<: *default
  host: xx.xx.xx.xx
  database: development

test:
  <<: *default
  database: development

production:
  <<: *default
  host: xx.xx.xx.xx
  database: production

好吧,由于需要使用来自MAINdb的大量表和来自辅助db的3 o 4表,因此我具有“混合连接”。

正如您在此处看到的那样,我建立了此辅助连接:

class AuxDbBase < ActiveRecord::Base  
  self.abstract_class = true
end

模型示例:

class Example< AuxDbBase
    self.table_name ="example"
end

动态连接:

connection_db_params = YAML::load(ERB.new(File.read(Rails.root.join("config/db_config", "#{project}.yml"))).result)[Rails.env]
Example.establish_connection connection_db_params

所有这些都在开发模式下工作,但是在生产模式下,我出现此错误:

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: there is no "example" relationship
LINE 1: SELECT * FROM tabla WHERE type = 'xxx'

有人知道问题的根源在哪里吗?

对于迁移环境而言,发生什么变化呢?

我很感谢您的帮助

对不起,我的英语

0 个答案:

没有答案