Подтвердить что ты не робот

Транзакция против очистителя базы данных усечения

Недавно у меня возникла проблема с одним из моих сценариев огурца. Некоторые записи в моей тестовой базе данных исчезали, пока функция работала. Я решил проблему, изменив строку

DatabaseCleaner.strategy = :transaction

к

DatabaseCleaner.strategy = :truncation

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

4b9b3361

Ответ 1

Помещая это очень просто: усечение удаляет все данные из базы данных и транзакции откат всех изменений, которые были сделаны в текущем сценарии.

Ответ 2

Усечение удаляет данные, выходящие из структуры базы данных, транзакция существенно откатывает операцию базы данных и является самой быстрой стратегией. И есть последний, который является удалением. Удаление удаляет данные и удаляет структуру базы данных, это самый медленный, но безопасный. Вы также можете проверить Разницу между стратегиями базы данных об усечении, транзакции и удаления