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

SchemaSpy对接PostgreSQL 8.0.2报错求助:版本兼容与连接问题

解决SchemaSpy v6.2.2分析PostgreSQL 8.0.2的两类报错步骤

一、使用postgresql-42.6.0.jar时的报错(Unsupported Server Version + type 'e' does not exist)

原因

PostgreSQL 8.0.2是超老旧版本(2005年发布),postgresql-42.x系列驱动已停止对PostgreSQL 8.0及更早版本的支持,驱动内部执行的查询会用到8.0不存在的语法/类型(比如报错中的type 'e',对应后期版本的枚举类型相关查询)。

解决步骤

  • 降级JDBC驱动到支持PostgreSQL 8.0的最高兼容版本:官方驱动中,支持8.0的最后一个稳定大版本是postgresql-9.4.1212.jar(JDBC4版本,兼容Java 6+),避免使用过于老旧的postgresql-8.0-325.jdbc3.jar。
  • 修改执行命令的-dp参数替换驱动路径:
java -jar schemaspy-6.2.2.jar \
-s public -db <databasename> -u <username> -p <password> \
-host <host> -o /tmp \
-dp /usr/share/java/postgresql-9.4.1212.jar \
-debug
  • 若仍有兼容性问题,可将SchemaSpy降级到v5.x系列(比如v5.0.0),v5.x对老旧数据库的适配性更好,搭配上述支持8.0的JDBC驱动使用。

二、使用postgresql-8.0-325.jdbc3.jar时的报错(no pg_hba.conf entry for ... SSL off)

原因

该老版本JDBC驱动默认不启用SSL连接,而你的PostgreSQL服务器pg_hba.conf中未配置允许当前客户端IP以非SSL方式连接的规则,导致连接被拒绝。

解决步骤

方案1:修改JDBC连接参数强制启用SSL

在SchemaSpy命令中添加-connprops参数指定SSL属性:

java -jar schemaspy-6.2.2.jar \
-s public -db <databasename> -u <username> -p <password> \
-host <host> -o /tmp \
-dp /usr/share/java/postgresql-8.0-325.jdbc3.jar \
-connprops "ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory" \
-debug

注:NonValidatingFactory用于跳过SSL证书验证,若服务器有合法SSL证书,可仅保留ssl=true。

方案2:修改PostgreSQL服务器的pg_hba.conf配置

  1. 登录PostgreSQL服务器,找到pg_hba.conf文件(通常路径为/var/lib/pgsql/data/或/etc/postgresql/8.0/main/)。
  2. 在文件靠前位置添加允许客户端IP非SSL连接的规则(规则匹配从上到下,优先匹配靠前的规则):
host    <databasename>    <username>    10.131.11.212/32    md5

替换<databasename>、<username>为实际值,10.131.11.212为你的客户端IP,也可使用网段如10.131.11.0/24允许整个网段连接。

  1. 重启PostgreSQL服务使配置生效,命令通常为service postgresql restart或/etc/init.d/postgresql restart。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:09:58