Liquibase 4.1.1版本SQL文件末尾添加注释触发报错问题咨询
问题根因
该报错是Liquibase 4.1.x~4.2.x版本的已知解析缺陷:当SQL变更文件的changeset配置stripComments: false时,SQL解析器不会忽略文件末尾的独立注释行,会误将该注释识别为未初始化的SQL语句提交给数据库,Oracle驱动无法处理纯注释格式的SQL请求,因此抛出Invalid SQL type: sqlKind = UNINITIALIZED异常。
解决方法
- 方案1(最彻底):将Liquibase升级到4.3.0及以上版本,该版本已经修复了这个SQL解析问题,无需修改原有SQL文件即可正常执行。
- 方案2(不升级版本的临时修复方案):如果暂时无法升级Liquibase,任选以下一种操作即可解决:
- 移除文件末尾的独立注释,将注释内容移到对应SQL语句的上方或者同一行,不要让注释单独处于文件最后位置
- 在末尾注释的下一行添加一个单独的分号
;,让解析器将空语句作为最后一个执行项,不会误把注释当成SQL提交 - 将changeset配置中的
stripComments: false改为stripComments: true,Liquibase会自动过滤所有注释,不会触发解析错误(不需要保留注释执行日志的场景推荐使用该方案)
内容的提问来源于stack exchange,提问作者user3441194
相关产品推荐
相关产品推荐

