我正在使用heroku和heroku postgresql。如何设置db命令超时,以便在sql命令超过10秒时出现异常?
答案 0 :(得分:18)
像这样配置你的database.yml,关键位是变量hash:
defaults: &default
adapter: postgresql
encoding: unicode
pool: 5
min_messages: warning
variables:
statement_timeout: 5000
答案 1 :(得分:5)
我不知道ruby,但是在PostgreSQL中你可以简单地运行它:
SET statement_timeout = '10s'
之后,此连接(会话)中的所有查询都将严格限制运行时。
您也可以在postgresql.conf中将其更改为全局默认值,或者甚至将其设置为给定数据库或给定用户的默认值:
ALTER DATABASE web SET statement_timeout = '10s';
ALTER USER bad_user SET statement_timeout = '10s';
答案 2 :(得分:5)
我在这里找到了一个解决方案:Ruby on Rails: How to set a database timeout in application configuration?
添加
ActiveRecord::Base.connection.execute('set statement_timeout to 10000')
在environment.rb
文件的末尾。
有没有人看到更好的方法?
答案 3 :(得分:3)
添加
ActiveRecord::Base.connection.execute('set statement_timeout to 10000')
到environment.rb
文件的末尾对我不起作用。
有用的是添加
ActiveRecord::Base.connection.execute("SET statement_timeout = '10s'")
到初始化文件。