2012-07-16 5 views
0

У меня есть моя схема Liquibase, первоначально определенная для PostreSQL. Теперь мне нужно изменить файл схемы для поддержки Oracle. У меня есть набор изменений, который имеет тег <sql>. У этого есть запрос, который обращается к таблице pg_catalog, чтобы установить значение последовательности. Однако это не сработает для Oracle. Если я удалю его, Liquibase жалуется на проверку проверки проверки. Он жалуется, даже если у меня есть пустой тег <sql> или какой-либо другой запрос, указанный внутри. Внутри этого набора изменений у меня есть много других операторов create-table, поэтому я не могу просто удалить oracle из атрибута dbms. Есть ли способ подавить этот sql для работы в Oracle?Liquibase: Пользовательский оператор SQL

ответ

1

Атрибут DBMS на changeset является механизмом, предназначенным для решения этой проблемы ..... Похоже, что вы пытаетесь сделать слишком много в одном changesest (но я думаю, вы уже поняли, что из)

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

Как исправить это, следует использовать опцию clearChecksums при работе с жидкостью. Он сообщает Liquibase, чтобы пересчитать контрольные суммы для наборов изменений, уже находящихся в базе данных. Это позволит вашему экземпляру базы данных postgres принять изменения в своих наборах изменений, которые вы сделали для Oracle.

+0

Да, у моего файла схемы есть один набор изменений для всех операторов create-table (около 69 таблиц), это устаревший код и уже в процессе производства, поэтому я не могу изменить его рефакторинг. Но clearChecksums будет вознаграждаться за все изменения, верно? Если это так, я бы предпочел избежать этого риска. – devang

+1

@gotuskar Да, он будет пересчитывать все изменения, но это нормально, если вы только изменили только один набор изменений. Изменения - это механизм, который использует Liquibase для обеспечения того, что представленный набор изменений является тем же, который был применен ранее. Также, как Liquibase может поддерживать атрибут «runOnChange» (примените только набор изменений, если он был изменен). Я предлагаю проверить его на копии вашей производственной базы данных. –

+0

Поскольку я переношу свое приложение в Oracle, я изменил множество наборов изменений, поэтому я не могу воспользоваться этой опцией. – devang

Смежные вопросы