Ruby on rails 两个数据库的设置会给出一个PG::UndefinedTable:ERROR:relation";“我的桌子”;不存在

Ruby on rails 两个数据库的设置会给出一个PG::UndefinedTable:ERROR:relation";“我的桌子”;不存在,ruby-on-rails,postgresql,rails-activerecord,Ruby On Rails,Postgresql,Rails Activerecord,我需要在同一个模型中连接两个数据库,其中一个存储数据,另一个用于检索数据 我的控制器中有一个正常的端点,用于create操作,如果有效,它将在我的数据库中存储一个新条目,然后执行一个对象方法,从另一个远程数据库检索数据 在MyClass.rb中,我有以下方法: def get_data(param1, param2) query = "..." # My SQL query db_connection = ActiveRecord::Base.establish_connection(

我需要在同一个模型中连接两个数据库,其中一个存储数据,另一个用于检索数据

我的控制器中有一个正常的端点,用于
create
操作,如果有效,它将在我的数据库中存储一个新条目,然后执行一个对象方法,从另一个远程数据库检索数据

MyClass.rb
中,我有以下方法:

def get_data(param1, param2)

  query = "..." # My SQL query
  db_connection = ActiveRecord::Base.establish_connection(
    :adapter  => "postgresql",
    :host     => 'my_remote_host',
    :port     => 'port",
    :user     => "my_username",
    :password => "my_password",
    :database => "my_database",
    :timeout  => 10000
  )
  results = db_connection.connection.execute query
  db_connection.disconnect!
  return results
end
我的问题是,当对
create
操作的第一个
POST
请求成功时,下面返回500个错误。更具体地说,
PG::UndefinedTable:ERROR:关系“myTable”不存在


db\u连接是否替换了现有的数据库连接?

好的,找到了问题。我在做什么

ActiveRecord::Base.establish_connection(:my_db)
在我的模型中,它覆盖了整个连接。相反,它应该是唯一的

establish_connection(:my_db)

好的,找到问题了。我在做什么

ActiveRecord::Base.establish_connection(:my_db)
在我的模型中,它覆盖了整个连接。相反,它应该是唯一的

establish_connection(:my_db)

这两个数据库中表的名称是否不同?是的,它们是具有不同名称的不同表OK,这可能是问题的一部分。已经有一段时间了,但我确实记得遇到过这样一个奇怪的问题,新连接实际上取代了旧连接,因此后续查询仍然使用新连接。但是,由于在您的第二个数据库中没有按照通常的rails约定(MyRailsModel->my_rails_models)命名的表,因此它显然失败了。我对修复方法不是100%确定,希望有人能提供一些帮助。在此期间,如果没有其他选择,您可以在继续对原始数据库进行其他查询之前执行类似“MyClass.建立_连接”(“原始_数据库”)的操作。两个数据库之间的表名是否不同?是的,它们是具有不同名称的不同表OK,这可能是问题的一部分。已经有一段时间了,但我确实记得遇到过这样一个奇怪的问题,新连接实际上取代了旧连接,因此后续查询仍然使用新连接。但是,由于在您的第二个数据库中没有按照通常的rails约定(MyRailsModel->my_rails_models)命名的表,因此它显然失败了。我对修复方法不是100%确定,希望有人能提供一些帮助。在此期间,如果没有其他选择,您可以在继续对原始数据库进行其他查询之前执行类似“MyClass.build_connection”(“原始_数据库”)的操作。