Транзакция vs Очиститель базы данных усечения - PullRequest
19 голосов
/ 14 сентября 2011

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

DatabaseCleaner.strategy = :transaction

до

DatabaseCleaner.strategy = :truncation

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

Ответы [ 2 ]

37 голосов
/ 17 сентября 2011

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

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

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

...