Spec-Zone.ru › Ruby on Rails 7.1

класс ActiveRecord::TransactionRollbackError

Родитель:
ActiveRecord::StatementInvalid

TransactionRollbackError будет поднят, когда транзакция откатывается базой данных из-за сбоя сериализации или тупика.

Эти исключения не следует обычно перехватывать в вложенных блоках транзакций, потому что они имеют побочные эффекты в фактической окружающей транзакции и внутреннем состоянии Active Record. Однако их можно перехватить, если вы находитесь над корневым блоком транзакции.

В этом случае будьте осторожны с тестовыми сценариями транзакций, поскольку они выполняют тестовые кейсы в собственной оболочке транзакции. Если вам абсолютно необходимо обработать эти исключения в тестах, рассмотрите возможность отключения тестовых сценариев транзакций в соответствующем классе тестов (self.use_transactional_tests = false).

Из-за вышеупомянутых побочных эффектов это исключение не должно подниматься вручную пользователями.

См. следующее:

  • www.postgresql.org/docs/current/static/transaction-iso.html

  • dev.mysql.com/doc/mysql-errors/en/server-error-reference.html#error_er_lock_deadlock

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API