liquibase是一个用于数据库变更跟踪、版本管理和自动部署的开源工具。它的使用方式方法可以参考官方文档或者其他人的博客,这里不做过多介绍。
1. 问题复现
在使用过程中发现了一个版本bug。这个bug是这样的:
当我向用户表 ts_user 增加一个字段(比如身高: height )时,我在 ts_user.xml 中填入:
当我重启项目时,日志中就发现liquibase执行了相关语句。
这时就发现在创建了新增了身高( height)这个字段后,liquibase莫名其妙地又给变更了一下用户( ts_user)表的注解(comment),于是我用数据库连接工具查看,用户表变成了这样:
很明显表注解这样的变更,影响了表的含义。
2. 问题解决
问题解决很简单,替换liquibase的版本。出问题的版本是3.8.9版本,把这个版本降低,使用3.6.3版本。不清楚高版本的liquibase为什么会出现这样的设计,至少我找了一圈没有找到可配置项用于消解这个问题。
使用3.6.3版本liquibase再次执行上面的步骤,执行效果如下,问题解决。
版本替换存在一个问题即3.6.3版本的liquibase对spring boot 2.2.9(自测目前至少是这个版本)以上版本不适配。如果选择使用高版本(2.2.9)Spring boot,则有以下变通的方法。
首先,将 databaseChangeLog 对应的 xsi:schemaLocation 标签中的值” http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.3.xsd “变更为3.8版本。
第二步,在执行的 addColumn 标签后,增加 setTableRemarks 用以重置表注释。
增加一步设置表注释的执行动作后,重启服务执行结果如下,用户表注释又恢复正常。
这样仍存在一个问题,即每次变更或新增表字段,都要在其后增加 setTableRemarks 标签用来恢复表注释,显得很冗余。
Original: https://www.cnblogs.com/lunyu/p/15272309.html
Author: 论语
Title: liquibase新增字段注释导致表格注释同时变更bug记录
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611782/
转载文章受原作者版权保护。转载请注明原作者出处!