Откат базы данных Informix - PullRequest
       14

Откат базы данных Informix

1 голос
/ 02 ноября 2011

У меня есть код, использующий базу данных Informix 11.5, с которой я хочу выполнить некоторые тесты.

Если тесты не пройдены, они часто оставляют базу данных в несогласованном состоянии, которое необходимо разрешить вручную перед повторным запуском тестов.

Я хотел бы автоматизировать это, чтобы тесты не требовали ручного вмешательства перед повторным запуском тестов.

Мое текущее решение состоит в том, чтобы написать некоторый код, который выполняет очистку, но это означает, что код должен поддерживаться всякий раз, когда в новых возможностях могут возникать новые несовместимые состояния.

В коде выполняется множество хранимых процедур, которые сами часто используют транзакции. Поскольку Informix не поддерживает вложенные транзакции, я не могу просто сложить всю работу в одну большую транзакцию.

Есть ли другой способ создать контрольную точку, к которой я могу восстановить базу данных?

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

Изменение состояния базы данных и ее возврат в известное состояние - одна из причин того, что сообщество юнит-тестов тратит время и усилия, избегая тестирования на базах данных.Это сложная проблема.

Informix 11.50 поддерживает точки сохранения;однако он не поддерживает одну BEGIN WORK за другой без промежуточного COMMIT или ROLLBACK.

По мере возможности тесты создают и загружают набор таблиц с известными данными.Одним из способов достижения этого является создание совершенно новой базы данных для теста.Тем не менее, это возможно только на границе, если вам нужно тестировать большие объемы данных.

Я не думаю, что эта проблема в какой-то степени уникальна для Informix - это общая проблема при тестировании операций СУБД.

1 голос
/ 04 ноября 2011

Вы можете создать виртуальную машину с диском для отмены, и после запуска теста вы можете закрыть виртуальную машину без сохранения изменений.Это равносильно тому, что вы никогда не запускали тесты!

1 голос
/ 03 ноября 2011

Если это сервер только для разработки, как насчет того, чтобы взять системный архив уровня 0 перед тестом?Я думаю, что это можно сделать и с помощью функций sysadmin (хотя и не уверен), так что это можно автоматизировать.После тестов вы просто восстанавливаете архив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...