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

在Maven项目中使用Liquibase时遇到数据库锁问题,表现为'waiting for changelog lock',导致更新失败。解决方法是删除DATABASECHANGELOGLOCK表中的锁定记录或更新其LOCKED字段。如何避免此类问题的具体原因和预防措施尚未明确。
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:如何使用一个全局配置文件来配置多个项目                 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值