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上完成所有原始查询!