Я использую Liquibase, чтобы применить изменения в базе данных. В какой-то момент я удалил все в базе данных, а затем попытался заставить Liquibase повторно запустить журнал изменений.
Мой "основной" файл журнала изменений выглядит так:
databaseChangeLog:
- include:
relativeToChangelogFile: true
file: db.changelog-diff-20180620-1733.yaml
И db.changelog-diff-20180620-1733.yaml выглядит так:
databaseChangeLog:
- changeSet:
runAlways: true
id: 1529512411141-1
author: XXXXXX (generated)
changes:
- createSequence:
sequenceName: hibernate_sequence
- Я думал, что смогу перезапустить Liquibase db.changelog-diff-20180620-1733.yaml, установив для runAlways значение true. Тем не менее Liquibase не запускает журнал изменений.
- Затем я попытался просто удалить все записи таблицы базы данных exchangelog. Это тоже не работает.
- Попробовал запустить Liquibase с помощью команды clearCheckSums.
Ничего из этого не сработало.
Я запускаю Liquibase через Gradle. Вот задачи:
task liquibaseDiffChangelog(type: JavaExec) {
group = "liquibase"
classpath sourceSets.main.runtimeClasspath
classpath configurations.liquibase
main = "liquibase.integration.commandline.Main"
args "--changeLogFile=" + "$projectDir/src/main/resources/db/changelog/db.changelog-diff-" + buildTimestamp() + ".yaml"
args "--referenceUrl=hibernate:spring:uk.xxx.xxxxx.xxxxxx.coh.domain?dialect=org.hibernate.dialect.PostgreSQL94Dialect"
args "--username=" + liquibaseProps.getProperty('username')
args "--password=" + liquibaseProps.getProperty('password')
args "--url=" + liquibaseProps.getProperty('url')
args "--driver=" + liquibaseProps.getProperty('driver')
args "diffChangeLog"
}
task migratePostgresDatabase(type: JavaExec) {
group = "liquibase"
classpath sourceSets.main.runtimeClasspath
classpath configurations.liquibase
main = "liquibase.integration.commandline.Main"
def urlString = project.hasProperty("dburl") ? "jdbc:postgresql://$dburl" : liquibaseProps.getProperty('url')
def user = project.hasProperty("flyway.user") ? "${rootProject.properties['flyway.user']}" : liquibaseProps.getProperty('username')
def password = project.hasProperty("flyway.password") ? "${rootProject.properties['flyway.password']}" : liquibaseProps.getProperty('password')
args "--changeLogFile=./src/main/resources/db/changelog/db.changelog-master.yaml"
args "--username=$user"
args "--password=$password"
args "--url=$urlString"
args "--driver=" + liquibaseProps.getProperty('driver')
args "update"
}
Кто-нибудь знает, как я могу заставить Liquibase повторно запускать журналы изменений?