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”(“原始_数据库”)的操作。