代码之家  ›  专栏  ›  技术社区  ›  svoop

“with\ U connection”是否必须与“exec\ U query”一起使用?

  •  4
  • svoop  · 技术社区  · 7 年前

    我偶尔会 PG::TRDeadlockDetected 使用PostgreSQL应用程序(通过Passenger/Nginx提供服务)在Rails上运行,并跟踪到代码中使用 ActiveRecord::Base.connection.exececute .

    为了解决这个问题,我要替换 .execute 具有 .exec_query 或 .exec_update 按照文件的建议。然而,目前还不清楚 ActiveRecord::Base.connection.exec_query 是否从连接池获取连接。

    • 使用时 ActiveRecord::Base.connection.exec\u查询 在Rails控制器中,是否必须用 ActiveRecord::Base.connection_pool.with_connection ?
    • 使用时 在请求的上下文之外(比如作为cronjob执行的Rake任务),是否必须用 ? (我猜是的)

    如果需要包装,是否有比以下更短的替代品:

    ActiveRecord::Base.connection_pool.with_connection do |connection|
      connection.exec_update "REINDEX INDEX my_complex_index"
    end
    

    (我猜:没有)

    0 回复  |  直到 7 年前
    推荐文章