Ruby on Rails: Как установить время ожидания базы данных в конфигурации приложения? - PullRequest
4 голосов
/ 17 августа 2010

Я бы хотел, чтобы в моей базе данных были запросы на тайм-аут, которые не выполняются в течение установленного периода времени, чтобы предотвратить монопольные запросы на выбросы из всех приложений.

Можно ли добавить что-либомои файлы конфигурации Rails для того, чтобы установить это?

Я пытался добавить строку, которую я часто видел онлайн timeout: 5000, в мой database.yml, но, похоже, это не имело никакого эффекта.

Я попытался сделать вызов ActiveRecord::Base.connection.execute('set statement_timeout to 5000') в environment.rb, но это вызвало ошибку Rails.

Я использую базу данных Postgres на Heroku, где у меня нет прямого доступа к базе данных,следовательно, я не могу сделать это с конфигурацией базы данных напрямую.Даже если я удаленно выполню эту команду с консоли Heroku, они могут перезапустить мое приложение в любое время, и если оно не будет выполнено повторно при запуске приложения, мои изменения будут потеряны.

Ответы [ 3 ]

6 голосов
/ 24 февраля 2015

database.yml:

defaults: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  min_messages: warning
  variables:
    statement_timeout: 5000
4 голосов
/ 22 августа 2010

Работает, просто нужно включить строку в environment.rb в самом конце, а не в начале или в блоке.

1 голос
/ 18 августа 2010

Попробуйте этот синтаксис:

SET statement_timeout = 5000;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...