Переименовать таблицы журнала изменений Liquibase

Я использую Liquibase (v 3.0.7) вместе с Spring (v 4.0.0):

<!-- Liquibase configuration -->
<bean id = "liquibase" class = "liquibase.integration.spring.SpringLiquibase">
    <property name = "dataSource" ref = "dataSource" />
    <property name = "changeLog" value = "classpath:database/changelog.xml" />
</bean>

После того, как я разверну приложение Spring, Liquibase создаст две таблицы: databasechangelog и databasechangeloglock. Есть ли способ переименовать эти две таблицы?


person mhmpl    schedule 03.01.2014    source источник
comment
Почему? Это таблицы, в которых записано, что сделала Liquibase. Изменение их имени делает вашу настройку нестандартной.   -  person Mark O'Connor    schedule 04.01.2014


Ответы (2)


Вы можете использовать системные свойства, чтобы переопределить имена таблиц по умолчанию.

person Harald Wellmann    schedule 03.01.2014

Или вы можете использовать небольшой обходной путь для настройки этих имен в конфигурации Spring, проверьте этот ответ для конфигурации Java - https://stackoverflow.com/a/50644347 или вы можете использовать это для конфигурации xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <bean id="liquibaseSystemPropsSetter"
          class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject" value="#{@systemProperties}"/>
        <property name="targetMethod" value="putAll"/>
        <property name="arguments">
            <util:properties>
                <prop key="liquibase.databaseChangeLogTableName">${application.liquibase.change.log.table.name}</prop>
                <prop key="liquibase.databaseChangeLogLockTableName">${application.liquibase.change.log.lock.table.name}
                </prop>
            </util:properties>
        </property>
    </bean>

    <bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase"
          depends-on="liquibaseSystemPropsSetter"
          p:dataSource-ref="localDataSource"
          p:changeLog="classpath:${application.liquibase.change.log.path}"
          p:shouldRun="${application.liquibase.should.run}"/>

</beans>
person Yury    schedule 04.06.2018