事务与截断数据库清除程序

时间:2011-09-14 16:10:08

标签: ruby-on-rails database transactions cucumber gem

最近我的一个黄瓜情景出了问题。功能运行时,我的测试数据库中的某些条目正在消失。我通过更改行

解决了这个问题
DatabaseCleaner.strategy = :transaction

DatabaseCleaner.strategy = :truncation

我不确定为什么这有帮助。数据库清理工具宝石网页上有一个表格,但它并没有真正说出这两个术语的含义。任何帮助理解这两个概念之间的区别都会很棒。

2 个答案:

答案 0 :(得分:36)

以非常简单的方式处理:截断从数据库中删除所有数据,并且事务回滚运行方案所做的所有更改。

答案 1 :(得分:1)

Truncation删除了离开数据库结构的数据,事务主要是回滚数据库操作,这是最快的策略。最后一个是删除。删除删除数据并删除数据库的结构,它是最慢但最安全的。 您还可以查看Difference between truncation, transaction and deletion database strategies