Невозможно спасти от ошибки «Потерянное соединение с сервером MySQL» - PullRequest
1 голос
/ 20 июня 2009

У меня есть блок примерно так:

begin
      # some SQL request
rescue Mysql::Error => e
      logputs "Mysql::Error occurred, retrying in 10s: #{e.message}"
      sleep 10
      retry
end

Но когда произошла ошибка «Потерянное соединение с сервером MySQL», этот блок не смог его перехватить и повторить (сервер MySQL был перезапущен). Любая идея, как я могу правильно поймать это исключение?

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 июня 2009

Из вашего комментария похоже, что происходит то, что исключение Mysql :: Error генерируется, но затем перехватывается ActiveRecord, который затем генерирует исключение ActiveRecord :: StatementInvalid (что в данном случае не очень полезно!) .

Я бы сказал, измените ваше спасение, чтобы поймать исключение AR :: StatementInvalid и посмотрите, что это для вас сделает.

0 голосов
/ 21 июня 2009

Вы уверены, что спасаете правильный тип исключения?

Попробуйте использовать следующий код:

rescue StandardError => e
  puts e

Это должно вывести любое возникшее исключение, и что более важно, вы сможете увидеть определенный тип. Затем вы можете изменить свое заявление о спасении, чтобы оно было более конкретным.

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