You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Liquibase与Docker postgis/postgis时出现编码错误问题求助

Liquibase执行SQL日志输出方法

要打印Liquibase运行时实际执行的插入语句,直接在Spring Boot的配置文件中添加如下日志配置即可:

# application.yml 配置
logging:
  level:
    # 开启liquibase基础日志
    liquibase: DEBUG
    # 打印所有执行的JDBC语句
    liquibase.executor.jvm.JdbcExecutor: TRACE

如果使用properties格式配置:

# application.properties 配置
logging.level.liquibase=DEBUG
logging.level.liquibase.executor.jvm.JdbcExecutor=TRACE

开启后可以直接在控制台看到Liquibase发送到数据库的完整SQL内容,可用于确认是读取文件阶段就已经乱码,还是写入数据库阶段才出现异常。

编码问题解决方案

结合你已完成的排查和降级3.8.7版本恢复正常的测试结果,该问题属于Liquibase 4.3.5版本的已知编码bug,该版本在系统默认编码非UTF-8的环境下(多为Windows设备)会优先读取系统默认编码解析变更文件,不会使用指定的UTF-8参数,这也是为什么仅你的设备出现问题、其他同事运行正常的原因。可尝试以下方案修复:

  • 显式指定Spring Liquibase的编码配置,不要仅依赖JVM参数:
spring:
  liquibase:
    encoding: UTF-8
  • 在pom.xml中添加全局编码配置,覆盖Maven运行时的默认编码:
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
  • 检查变更文件的编码声明:
    • XML格式的变更文件确认头部声明为<?xml version="1.0" encoding="UTF-8"?>
    • SQL格式的变更文件在开头加上-- changeset 你的标识:版本号 encoding:UTF8
  • 临时解决方案:如果上述配置均无效,可暂时锁定使用3.8.7版本,待升级到4.10以上的更高稳定版Liquibase后再尝试更新。

内容的提问来源于stack exchange,提问作者Ersch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:24:02