Я пытаюсь настроить плагин жидкой основы для автоматической смены логов. Мне удалось запустить плагин и получить журнал изменений, но генерируемый журнал содержит несколько проблем.
Основная проблема, с которой я сталкиваюсь, заключается в том, что сгенерированный журнал изменений просит БД удалить таблицу последовательности гибернации.
Соответствующая часть настройки моего файла build.gradle следующая:
dependencies{
//liquibase
liquibaseRuntime 'org.liquibase:liquibase-core:3.8.1'
liquibaseRuntime 'com.vaadin:vaadin-spring-boot-starter'
liquibaseRuntime 'org.mariadb.jdbc:mariadb-java-client:'+mariaDbClient
liquibaseRuntime 'mysql:mysql-connector-java:8.0.19'
liquibaseRuntime 'org.liquibase.ext:liquibase-hibernate5:3.8'
liquibaseRuntime 'org.springframework.boot:spring-boot-starter'
liquibaseRuntime 'org.springframework.boot:spring-boot-starter-security'
liquibaseRuntime 'org.springframework.boot:spring-boot-starter-data-jpa'
liquibaseRuntime sourceSets.main.output
}
diff.dependsOn compileJava
diffChangeLog.dependsOn compileJava
generateChangelog.dependsOn compileJava
configurations {
liquibaseRuntime.extendsFrom runtime
}
liquibase {
activities {
diffMain {
changeLogFile 'src/main/resources/db/liquibase-changelog-gen.xml'
url 'jdbc:mysql://localhost:3306/ideasapps?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy'
username 'xxx'
password 'xxx'
referenceUrl 'hibernate:spring:a.b.c?dialect=org.hibernate.dialect.MariaDBDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy'
}
}
}
Я использую базу данных mariaDB, которая совместима с драйвером MySQL, который я установил. Мне пришлось использовать разъем MySQL, потому что есть ошибка с разъемом MariaDB и гибернационным жидкостным плагином (CORE-3457). MySQL один работает. Кроме того, мне пришлось указать стратегию именования, потому что стратегия по умолчанию не соответствовала стратегии, используемой пружиной.
Когда я запускаю gradlew diff, я получаю эту странную часть, где он не распознает собственные таблицы liquibase и спящий режим таблица последовательности:
Unexpected Column(s):
ideasapps.databasechangelog.AUTHOR
ideasapps.databasechangelog.COMMENTS
ideasapps.databasechangelog.CONTEXTS
ideasapps.databasechangelog.DATEEXECUTED
ideasapps.databasechangelog.DEPLOYMENT_ID
ideasapps.databasechangelog.DESCRIPTION
ideasapps.databasechangelog.EXECTYPE
ideasapps.databasechangelog.FILENAME
ideasapps.databasechangelog.ID
ideasapps.databasechangeloglock.ID
ideasapps.databasechangelog.LABELS
ideasapps.databasechangelog.LIQUIBASE
ideasapps.databasechangeloglock.LOCKED
ideasapps.databasechangeloglock.LOCKEDBY
ideasapps.databasechangeloglock.LOCKGRANTED
ideasapps.databasechangelog.MD5SUM
ideasapps.databasechangelog.ORDEREXECUTED
ideasapps.databasechangelog.TAG
ideasapps.hibernate_sequence.next_val
Также говорится, что последовательность гибернации отсутствует:
Missing Sequence(s):
hibernate_sequence
Наконец, когда я запускаю gradlew diffChangelog
, я получаю этот набор изменений:
<changeSet author="Orion (generated)" id="1587596582656-67">
<dropTable tableName="hibernate_sequence"/>
</changeSet>
Это разрывает приложение, поскольку оно удаляет таблицу, которую использует Hibernate для отслеживания текущих индексов. Как правильно настроить этот плагин для правильной генерации журнала изменений?