liquibase在maven下的使用(持续更新中)

liquibase在maven下的操作指南
--step 1:配置maven下的liquibase插件
配置方法一:不用配置文件
  <plugin>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-maven-plugin</artifactId>
        <version>3.0.5</version>
        <configuration>
            --下一行为数数据库变更日志文件
            <changeLogFile>${basedir}/src/main/resources/liquibase/changeLogs.sql</changeLogFile>
            --以下为数据库连接参数
            <driver>oracle.jdbc.OracleDriver</driver>
            <url>jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.23)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = PDBDEMO)(INSTANCE_NAME=DEMO)))</url>
            <username>cms</username>
            <password>cms</password>
            <!--配置参数禁用弹出的对话框确认迁移在非本地数据库-->
            <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
        </configuration>
        <executions>
            <execution>
                --配置什么时候执行数据库变更日志中的SQL脚本
                <phase>process-resources</phase>
                <goals>
                    --执行类型
                    <goal>update</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
配置方法二:用配置文件,简化pom文件的配置
  <plugin>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-maven-plugin</artifactId>
        <version>3.0.5</version>
        <configuration>
            --下一行为liquibase的配置文件路径
            <propertyFile>${basedir}/src/main/resources/liquibase/liquibase.properties</propertyFile>
            <!--配置参数,以禁用弹出的对话框,该对话框将确认非本地数据库上的迁移-->
            <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
        </configuration>
        <executions>
            <execution>
                --配置什么时候执行数据库变更日志中的SQL脚本
                <phase>process-resources</phase>
                <goals>
                    --执行类型
                    <goal>update</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    
    --以下为src/main/resources/liquibase/liquibase.properties文件的配置内容
    changeLogFile:src/main/resources/liquibase/changeLogs.sql
    driver:oracle.jdbc.OracleDriver
    url:jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.23)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME = PDBDEMO)(INSTANCE_NAME=DEMO)))
    username:cms
    password:cms
--step 2:创建上述配置文件中对应的数据库变更日志文件


--step 3:编辑数据库变更日志


--step 4:启动程序,maven会自动运行liquibase中的update命令,依次执行配置文件中指定的数据库变更日志中的SQL脚本


使用中遇到的坑:

1:启动程序时一直提示:waiting for changelog lock......

最后报:liquibase update failed:could not acuire change log lock

原因是:数据库中表:DATABASECHANGELOGLOCK有一条记录中锁了database;

    解决办法当然是:删除该条数据,或者将该条数据更新:LOCKED=0,LOCKGRANTED=null,LOCKEDBY=null

什么情况下出现该问题,或者如何避免,目前还没梳理出来。


有待摸索验证的问题:
1:配置中更多参数的含义和功能
2:尝试多个数据库变更日志文件分开,由一个总的文件来汇总
3:如何执行rollback命令
4:确定已经执行过的脚本,再次执行时是否会自动忽略
5:确定先决条件失败后,如何能不执行,而非直接报错
6:确定先决条件的作用域
7:确定changeset的注解comment中更多的参数意义和使用方法
8:尝试更多的DLL SQL脚本,形成模板
9:尝试两种配置liquibase插件的方法:配置文件和直接在pom中配置  (已实现)
10:如何使用一个全局配置文件来配置多个项目                 
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页