17

私はherokuとheroku postgresqlを使用しています。SQL コマンドに 10 秒以上かかる場合に例外が発生するように、db コマンドのタイムアウトを設定するにはどうすればよいですか?

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 に答える