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

Quarkus集成OpenTelemetry时Liquibase驱动识别报错求助

问题根源

  • 自定义LiquibaseRunner未适配OpenTelemetry代理JDBC URL格式:Liquibase默认从JDBC URL推断驱动类,但jdbc:otel:开头的URL是OpenTelemetry的代理格式,自定义Runner的逻辑没法识别这种格式背后的实际PostgreSQL驱动,也没正确加载指定的io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver,因此抛出驱动类识别失败的异常。
  • 自定义Runner绕过了Quarkus原生集成逻辑:Quarkus官方的Liquibase扩展已经和OpenTelemetry JDBC instrumentation做了适配,能自动解析代理URL、加载代理驱动并关联实际数据库驱动,而自定义Runner脱离了这个上下文,没有利用Quarkus的配置加载和驱动管理机制。

标准处理方式

优先使用Quarkus原生Liquibase配置(推荐)

直接在application.properties中配置Liquibase参数,无需自定义Runner:

# 数据库连接配置
quarkus.datasource.jdbc.url=jdbc:otel:postgresql://localhost:5432/sampledb
quarkus.datasource.jdbc.driver=io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver
# Liquibase配置
quarkus.liquibase.change-log=db/changelog/db.changelog-master.yaml
quarkus.liquibase.enabled=true

Quarkus会自动处理代理驱动的加载、URL解析,以及Liquibase的初始化执行,完全适配OpenTelemetry集成场景。

若必须使用自定义LiquibaseRunner

  • 显式指定驱动类:在Runner代码中不要依赖Liquibase的URL自动推断,直接设置驱动类为io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver。
  • 依赖Quarkus配置上下文:通过@ConfigProperty注入数据库URL、驱动类等参数,而非硬编码,确保和Quarkus的整体配置一致。
  • 确保依赖完整:项目中必须引入quarkus-opentelemetry-jdbc扩展,保证OpenTelemetry JDBC代理驱动的类能被正确加载到类路径中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:01:55