Vid*_* Ha 15 sql database-connection ruby-on-rails
在数据库停机后,Rails将首先抛出此错误一次:
ActiveRecord :: StatementInvalid:NativeException:org.postgresql.util.PSQLException:连接被拒绝.检查主机名和端口是否正确以及postmaster是否接受TCP/IP连接.
从那时起,即使在数据库备份之后,每次调用数据库都会出现以下错误:
ActiveRecord :: StatementInvalid:ActiveRecord :: JDBCError:此连接已关闭.
为了让服务器再次运行,我必须重新启动rails服务器.这对我们来说并不理想,因为我们的产品工程师希望对我们的数据库进行维护,而不必恢复依赖于数据库的所有服务.所以,我想知道 - 有没有办法自动让Rails尝试重新建立数据库连接或建议的方式来获得这种行为?
我尝试过的事情:
我已经尝试在我的数据库选项中将reconnect设置为true,然后我可以杀死单个数据库连接,rails将重新建立连接.但是,它不会在数据库中断之后.我发现从命令控制台我可以通过调用来恢复连接
的ActiveRecord :: Base的:: establish_connection
所以也许找到一个干净的地方让rails调用上面的命令,这会有用吗?有什么建议?
在某处插入救援
rescue ActiveRecord::StatementInvalid: ActiveRecord::JDBCError
ActiveRecord::Base::establish_connection
retry
Run Code Online (Sandbox Code Playgroud)
但是哪里?我不知道
您也可以在 ApplicationController 中使用救援。但这不会重试失败的操作,因此您可能还应该渲染一些错误模板
rescue_from ActiveRecord::StatementInvalid: ActiveRecord::JDBCError do
ActiveRecord::Base::establish_connection
render 'errors/error', :status => 500
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5872 次 |
最近记录: |