我偶尔会
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
(我猜:没有)