使用liquibase管理数据库变更
项目更新或升级时,总会因为缺失数据库字段导致部分功能无法正常使用。
liquibase可以很好的解决这个问题。网上对于其使用有很多例子,但我更喜欢的还是根据sql文件来记录变更。
一、引入依赖
1 | <dependency> |
二、文件配置
2.1 spring配置
1 | spring: |
enabled
属性设置为truechange-log
属性设置sql变更的配置文件
2.2 change-log文件配置
1 | databaseChangeLog: |
2.3 change-log文件及sql文件在项目中的展示
三、sql执行
liquibase开启后,会在项目启动的时候执行,注意sql文件不要报错,否则会启动失败。
另外,sql文件建立后千万不要修改文件,否则liquibase会认为是相同id的sql变更,会重新执行,而 changeSet
的id相同会执行失败,导致启动失败。
建议以追加sql文件的形式来进行数据库变更,任何字段的修改都遵循这一原则,这样即使不同版本的项目进行更新时,都能根据 changeSet
补全sql变更。
sql执行成功后,数据库会多两张表,DATABASECHANGELOG
和 DATABASECHANGELOGLOCK
。DATABASECHANGELOG
表里记录了sql的变更日志。
如果确实要修改sql文件,则需要在数据库里删除 ID = changeSet
的记录。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 张晓风的博客!
评论