我正在使用 heroku 和 heroku postgresql。如何设置 db 命令超时,以便在 sql 命令花费超过 10 秒时得到异常?
问问题
12003 次
4 回答
22
像这样配置你的 database.yml,关键位是变量哈希:
defaults: &default
adapter: postgresql
encoding: unicode
pool: 5
min_messages: warning
variables:
statement_timeout: 5000
于 2015-02-24T04:36:28.933 回答
6
我在这里找到了一个解决方案:Ruby on Rails:如何在应用程序配置中设置数据库超时?
添加
ActiveRecord::Base.connection.execute('set statement_timeout to 10000')
在environment.rb
文件的末尾。
有没有人看到更好的方法?
于 2013-02-08T00:05:18.873 回答
5
我不知道 ruby,但是在 PostgreSQL 中你可以简单地运行这个:
SET statement_timeout = '10s'
之后,此连接(会话)中的所有查询都将对运行时进行严格限制。
您还可以在 postgresql.conf 中将其更改为全局默认值,甚至可以在给定数据库或给定用户中将其设为默认值,例如:
ALTER DATABASE web SET statement_timeout = '10s';
ALTER USER bad_user SET statement_timeout = '10s';
于 2013-02-07T02:03:53.667 回答
4
添加
ActiveRecord::Base.connection.execute('set statement_timeout to 10000')
到environment.rb
文件末尾对我不起作用。
有效的是添加
ActiveRecord::Base.connection.execute("SET statement_timeout = '10s'")
到一个初始化文件。
于 2016-03-23T16:12:45.400 回答