17

我正在使用 heroku 和 heroku postgresql。如何设置 db 命令超时,以便在 sql 命令花费超过 10 秒时得到异常?

4

4 回答 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 回答