Spec-Zone.ru › Ruby on Rails 8.1

class ActiveRecord::TransactionRollbackError

Родительский класс:
ActiveRecord::StatementInvalid

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

Эти исключения, как правило, не следует перехватывать во вложенных блоках транзакций, поскольку они вызывают побочные эффекты во внешней транзакции и во внутреннем состоянии 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