【问题标题】:Rollback informix database回滚 informix 数据库
【发布时间】:2011-11-02 10:38:35
【问题描述】:

我有一些使用 Informix 11.5 数据库的代码,我想对其运行一些测试。

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

我想自动执行此操作,以便在再次运行测试之前测试不需要人工干预。

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

代码运行很多存储过程,这些存储过程本身经常使用事务。由于 Informix 不支持嵌套事务,因此我不能将所有工作都包含在一个大事务中。

是否有另一种方法可以创建可以将数据库恢复到的检查点?

【问题讨论】:

    标签: informix rollback


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果这是仅用于开发的服务器,那么在测试之前获取 0 级 ontape 系统存档如何?我认为这也可以通过系统管理员功能来完成(虽然不确定),所以它可以自动化。测试结束后,您只需恢复存档即可。

      【讨论】:

        【解决方案3】:

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

        Informix 11.50 确实支持保存点;但是,它不支持一个接一个的 BEGIN WORK 而没有中间的 COMMIT 或 ROLLBACK。

        尽可能让测试创建并加载一组包含已知数据的表。实现这一目标的一种方法是为测试创建一个全新的数据库。但是,这仅在您需要使用大量数据进行测试时才可行。

        我不认为这个问题是 Informix 独有的 - 它是测试 DBMS 操作的普遍问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-09
          • 2016-12-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多