Rails:PG :: ConnectionBad(连接已关闭)
问题描述:
我在Rails中使用原生查询(因为我的查询很复杂,我不认为它可以在ActiveRecord
中表示)。所以这里是我如何尝试:Rails:PG :: ConnectionBad(连接已关闭)
get do
connection = ActiveRecord::Base.connection.raw_connection
connection.prepare('order_statistic', @@sql)
data = connection.exec_prepared('order_statistic', [params[:id]])
connection.close()
data
end
此代码第一次成功运行。但第二次,它会抛出异常。 (我正在使用PostgresSQL)
PG::ConnectionBad (connection is closed)
如果我删除行connection.close
。我会遇到另一个例外:
PG::DuplicatePstatement (ERROR: prepared statement "order_statistic" already exists
请帮助我如何正确使用原始查询。
感谢
答
做您可以按照下列原始查询:
ActiveRecord::Base.connection.execute(%{YOUR QUERY HERE})
在你的代码的原因是你的数据库已经紧密联系,所以你不能做进一步的查询,重新连接DB你可以调用reconnect!
这样的:
ActiveRecord::Base.connection.reconnect!
但是我不会建议你这样做,轨道已经帮你处理一下,不要自己动手,让用我的第一suggesti上完成所有原始查询!