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

Liquibase Docker容器v4.17.0连接Redshift失败求助

问题

使用liquibase/liquibase:v4.17.0 Docker镜像连接Redshift时遇到两类问题:

  1. 未指定驱动类时,Liquibase无法从JDBC URL自动识别驱动:
Unexpected error running Liquibase: Driver class was not specified and could not be determined from the url (jdbc:redshift://aaaa.aaaa.eu-west-2.redshift.amazonaws.com:dddd:/aaaa).
  1. 手动添加Redshift驱动JAR和Liquibase Redshift扩展JAR后,无论指定驱动类为com.amazon.redshift.Driver(驱动JAR内定义)还是com.amazon.redshift.jdbc42.Driver(AWS文档指定),均报错找不到驱动:
Unexpected error running Liquibase: Cannot find database driver: com.amazon.redshift.Driver

Unexpected error running Liquibase: Cannot find database driver: com.amazon.redshift.jdbc42.Driver

当前使用的Dockerfile:

FROM liquibase/liquibase:latest

COPY entry.sh /entry.sh
ADD https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.jar lib/redshift-jdbc42-2.1.0.9.jar
ADD https://github.com/liquibase/liquibase-redshift/releases/download/v4.17.0/liquibase-redshift-4.17.0.jar lib/liquibase-redshift-4.17.0.jar
COPY liquibase.properties liquibase.properties

ENTRYPOINT ["/entry.sh"]

容器内执行的命令(已省略敏感信息):

docker-entrypoint.sh --defaultsFile=liquibase.properties --classpath=lib/redshift-jdbc42-2.1.0.9.jar

注:本地Liquibase v4.17.0命令行版本可正常连接Redshift。

解决方案

1. 修正类路径配置

Liquibase Docker镜像需要同时加载Redshift驱动JAR和Liquibase Redshift扩展JAR,只指定驱动JAR会导致扩展无法识别Redshift类型。修改执行命令的--classpath参数,同时包含两个JAR:

docker-entrypoint.sh --defaultsFile=liquibase.properties --classpath=lib/redshift-jdbc42-2.1.0.9.jar:lib/liquibase-redshift-4.17.0.jar

或者直接在liquibase.properties中配置统一类路径:

classpath: lib/redshift-jdbc42-2.1.0.9.jar:lib/liquibase-redshift-4.17.0.jar

2. 匹配驱动类与JAR版本

Redshift JDBC 4.2版本的驱动类通常为com.amazon.redshift.jdbc42.Driver,部分新版本JAR已统一使用com.amazon.redshift.Driver。可以查看驱动JAR内的META-INF/services/java.sql.Driver文件确认正确类名,然后在liquibase.properties中明确指定:

driver: com.amazon.redshift.jdbc42.Driver

3. 调整JAR存放路径到默认扫描目录

Liquibase Docker镜像默认会扫描/liquibase/lib目录下的所有JAR,建议将驱动和扩展JAR复制到该目录,避免自定义路径带来的加载问题:

FROM liquibase/liquibase:v4.17.0

COPY entry.sh /entry.sh
# 复制到Liquibase默认扫描的lib目录
ADD https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.jar /liquibase/lib/
ADD https://github.com/liquibase/liquibase-redshift/releases/download/v4.17.0/liquibase-redshift-4.17.0.jar /liquibase/lib/
COPY liquibase.properties /liquibase/liquibase.properties

ENTRYPOINT ["/entry.sh"]

修改后无需手动指定--classpath,Liquibase会自动加载目录内的JAR。

4. 修正JDBC URL格式

原URL中端口后多了一个冗余斜杠(:dddd:/aaaa),修正为标准格式:

jdbc:redshift://aaaa.aaaa.eu-west-2.redshift.amazonaws.com:dddd/aaaa

内容的提问来源于stack exchange,提问作者aj-ips

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:55:21