2011-11-02 166 views
1

我有一个使用,我想在其上运行一些测试一个Informix数据库11.5一些代码。回滚Informix数据库

如果测试失败,它们通常会使数据库处于不一致的状态,需要手动解析数据库才能再次运行测试。

我想自动执行此,这样的测试不再次运行测试之前需要手动干预。

我目前的解决方案是编写一些代码来进行清理,但这意味着只要新功能中出现潜在的新的不一致状态,就必须维护代码。

的代码运行了大量的存储过程,其本身通常使用的交易。由于Informix不支持嵌套事务,所以我不能将所有工作都包装在一个大事务中。

有另一种方式来创造,我可以回去将数据库恢复到一个检查点?

回答

1

您可以使用撤消磁盘创建虚拟机,运行测试后,可以关闭虚拟机而不保存更改。这相当于你从未进行过测试!

1

如果这是一个仅限于开发的服务器,那么在测试之前如何取得0级的ontape系统档案?我认为这也可以通过系统管理员功能来完成(不知道),所以它可以自动化。在测试之后,您只需恢复存档。

1

更改数据库状态并将其重置为已知状态是单元测试社区花时间和精力避免测试数据库的原因之一。这是一个棘手的问题。

的Informix 11.50不支持保存点;但是,它不支持一个BEGIN WORK而没有介入COMMIT或ROLLBACK。

在可能范围内,有测试创建并加载一组具有已知数据表。实现这一目标的一种方法是为测试创建一个全新的数据库。但是,如果您需要使用大量数据进行测试,则这仅仅是可行的。

我不认为这个问题对Informix来说是独一无二的 - 这是测试DBMS操作的一个普遍问题。