Liquibase Gradle 插件正在生成的更新日志中删除休眠序列 table
Liquibase Gradle Plugin is dropping hibernate sequence table on generated changelog
我正在尝试设置 liquibase gradle 插件来自动生成我的变更日志。我已设法 运行 插件并获得更新日志,但生成的日志包含几个问题。
我遇到的主要问题是生成的变更日志要求数据库删除休眠序列 table。
我的 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'
}
}
}
我正在使用与我设置的 MySQL 驱动程序兼容的 mariaDB 数据库。我不得不使用 MySQL 连接器,因为 MariaDB 和 hibernate liquibase 插件 (CORE-3457) 存在错误。 MySQL 一 运行 秒。另外,我必须指定命名策略,因为默认命名策略与 spring 使用的策略不匹配。
当我 运行 gradlew diff 我得到这个奇怪的部分,它不识别 liquibase 自己的 tables 和休眠序列 table:
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 用来跟踪当前索引的 table。如何正确设置此插件以实现正确的更新日志生成?
我没有找到导致问题的原因,但我设法通过将 table 更改为 liquibase 的序列来解决它:
<changeSet author="Lucas Carvalhaes" id="xxxxxxx">
<preConditions onFail="MARK_RAN">
<tableExists tableName="hibernate_sequence"/>
</preConditions>
<dropTable cascadeConstraints="true"
tableName="hibernate_sequence"/>
<createSequence
cycle="false"
ordered="true"
sequenceName="hibernate_sequence"
startValue="34494"/>
</changeSet>
我只是使用原始 table 值作为序列的起始值来保留我的数据库(因为它是一个小值,所以这不是真正的问题)。
我正在尝试设置 liquibase gradle 插件来自动生成我的变更日志。我已设法 运行 插件并获得更新日志,但生成的日志包含几个问题。
我遇到的主要问题是生成的变更日志要求数据库删除休眠序列 table。
我的 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'
}
}
}
我正在使用与我设置的 MySQL 驱动程序兼容的 mariaDB 数据库。我不得不使用 MySQL 连接器,因为 MariaDB 和 hibernate liquibase 插件 (CORE-3457) 存在错误。 MySQL 一 运行 秒。另外,我必须指定命名策略,因为默认命名策略与 spring 使用的策略不匹配。
当我 运行 gradlew diff 我得到这个奇怪的部分,它不识别 liquibase 自己的 tables 和休眠序列 table:
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 用来跟踪当前索引的 table。如何正确设置此插件以实现正确的更新日志生成?
我没有找到导致问题的原因,但我设法通过将 table 更改为 liquibase 的序列来解决它:
<changeSet author="Lucas Carvalhaes" id="xxxxxxx">
<preConditions onFail="MARK_RAN">
<tableExists tableName="hibernate_sequence"/>
</preConditions>
<dropTable cascadeConstraints="true"
tableName="hibernate_sequence"/>
<createSequence
cycle="false"
ordered="true"
sequenceName="hibernate_sequence"
startValue="34494"/>
</changeSet>
我只是使用原始 table 值作为序列的起始值来保留我的数据库(因为它是一个小值,所以这不是真正的问题)。