У меня есть моя схема Liquibase, первоначально определенная для PostreSQL. Теперь мне нужно изменить файл схемы для поддержки Oracle. У меня есть набор изменений, который имеет тег <sql>
. У этого есть запрос, который обращается к таблице pg_catalog
, чтобы установить значение последовательности. Однако это не сработает для Oracle. Если я удалю его, Liquibase жалуется на проверку проверки проверки. Он жалуется, даже если у меня есть пустой тег <sql>
или какой-либо другой запрос, указанный внутри. Внутри этого набора изменений у меня есть много других операторов create-table, поэтому я не могу просто удалить oracle из атрибута dbms. Есть ли способ подавить этот sql для работы в Oracle?Liquibase: Пользовательский оператор SQL
0
A
ответ
1
Атрибут DBMS на changeset является механизмом, предназначенным для решения этой проблемы ..... Похоже, что вы пытаетесь сделать слишком много в одном changesest (но я думаю, вы уже поняли, что из)
Ошибка проверки контрольной суммы - это механизм безопасности Liquibase, предназначенный для защиты базы данных от кого-либо, нарушающего файлы схемы.
Как исправить это, следует использовать опцию clearChecksums при работе с жидкостью. Он сообщает Liquibase, чтобы пересчитать контрольные суммы для наборов изменений, уже находящихся в базе данных. Это позволит вашему экземпляру базы данных postgres принять изменения в своих наборах изменений, которые вы сделали для Oracle.
Смежные вопросы
- 1. Пользовательский SQL в Groovy DSL для Liquibase?
- 2. Liquibase Rollback Custom SQL
- 3. Liquibase: SQL не генерирует
- 4. LiquiBase NoSuchMethodError с SQL Server
- 5. Условие Liquibase sql не проверяется
- 6. Пользовательский оператор в Doctrine DQL
- 7. Spark: Пользовательский оператор JavaPairRDD
- 8. определить пользовательский сканирующий оператор
- 9. Пользовательский логический оператор «и»
- 10. Как создать пользовательский оператор
- 11. Доминирующий пользовательский оператор литья
- 12. Liquibase updateSQL
- 13. Liquibase: Migrate.sql не проверяет precondtions
- 14. FuelPHP - Как выполнить пользовательский многострочный MySQL-оператор?
- 15. Как определить параметры в LiquiBase Форматированная SQL
- 16. Получите выходной SQL из набора изменений Liquibase
- 17. Ошибка при использовании Liquibase на SQL Server
- 18. LiquiBase: установка поля DBMS в формате SQL
- 19. Liquibase - обновить собственный сценарий MS SQL
- 20. SQL файла в LiquiBase никогда не выполняется
- 21. Комментарии Liquibase в sql форматированных журналах изменений
- 22. , выполняющий общий файл sql с использованием Liquibase
- 23. Liquibase: Ошибка выполнения SQL SET DEFINE OFF
- 24. modifyDataType в LiquiBase против SQL Server
- 25. Создать функцию из SQL скрипта LiquiBase
- 26. Как перевести SQL-триггер на Liquibase
- 27. Настройка Liquibase с сервером MS-SQL
- 28. Выполнение сложного SQL с использованием Liquibase/DB2
- 29. tagDatabase и включить синтаксис SQL для LiquiBase?
- 30. Как сопоставить SQL для LiquiBase XML Tag
Да, у моего файла схемы есть один набор изменений для всех операторов create-table (около 69 таблиц), это устаревший код и уже в процессе производства, поэтому я не могу изменить его рефакторинг. Но clearChecksums будет вознаграждаться за все изменения, верно? Если это так, я бы предпочел избежать этого риска. – devang
@gotuskar Да, он будет пересчитывать все изменения, но это нормально, если вы только изменили только один набор изменений. Изменения - это механизм, который использует Liquibase для обеспечения того, что представленный набор изменений является тем же, который был применен ранее. Также, как Liquibase может поддерживать атрибут «runOnChange» (примените только набор изменений, если он был изменен). Я предлагаю проверить его на копии вашей производственной базы данных. –
Поскольку я переношу свое приложение в Oracle, я изменил множество наборов изменений, поэтому я не могу воспользоваться этой опцией. – devang