Liquibase Force работает всегда - PullRequest
0 голосов
/ 27 июня 2018

Я использую 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
  1. Я думал, что смогу перезапустить Liquibase db.changelog-diff-20180620-1733.yaml, установив для runAlways значение true. Тем не менее Liquibase не запускает журнал изменений.
  2. Затем я попытался просто удалить все записи таблицы базы данных exchangelog. Это тоже не работает.
  3. Попробовал запустить 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 повторно запускать журналы изменений?

1 Ответ

0 голосов
/ 28 июня 2018

Спасибо за все ответы. В конце концов я отказался от этого. Я сдул базу данных, а затем снова запустил задачу Gradle liquibaseDiffChangelog, чтобы получить чистый журнал изменений при построении базы данных.

Таким образом, мой внешний вид выглядит следующим образом, то есть только один файл журнала изменений в моем основном файле журнала изменений:

databaseChangeLog:
- include:
    relativeToChangelogFile: true
    file: db.changelog-diff-20180627-2001.yaml

Просто кажется, что так меньше хлопот.

Еще раз спасибо за все ответы

...