【问题标题】:Rails: PG::ConnectionBad (connection is closed)Rails:PG::ConnectionBad(连接已关闭)
【发布时间】:2016-11-30 08:35:25
【问题描述】:

我在 Rails 中使用原生查询(因为我的查询很复杂,而且我认为它不能用 ActiveRecord 表达)。所以这是我的尝试:

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.close。我会遇到另一个例外:

PG::DuplicatePstatement(错误:准备好的语句“order_statistic” 已经存在

请帮助我如何正确使用原始查询。

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby database postgresql


    【解决方案1】:

    要进行原始查询,您可以这样做:

    ActiveRecord::Base.connection.execute(%{YOUR QUERY HERE})
    

    你代码中的原因是你已经关闭了与数据库的连接,所以你不能做进一步的查询,要重新连接数据库你可以调用reconnect! like:

    ActiveRecord::Base.connection.reconnect!
    

    但我不建议你这样做,rails已经帮你处理了,不要自己做,用我的第一个建议来完成所有原始查询!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 2016-07-18
      • 2019-04-17
      • 2013-05-31
      • 1970-01-01
      相关资源
      最近更新 更多