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

使用SchemaSpy 6.2.4生成Aurora Postgres 15.4 ER图遇错求助

Aurora Postgres 15.4 + SchemaSpy 6.2.4 生成ER图问题排查与解决

环境配置

  • 数据库:Aurora Postgres 15.4,连接正常,已部署postgresql-42.7.5.jar
  • SchemaSpy版本:6.2.4(对应jar包schemaspy-6.2.4.jar)
  • Graphviz版本:12.2.1-win64(dot版本12.2.1 (20241206.2353))
  • 执行命令:
java -jar schemaspy-6.2.4.jar -t pgsql -dp postgresql-42.7.5.jar -host db-ice-online-uat-central-1.rds.amazonaws.com -port 5432 -db fin -u pguser -p password -s public -o output

遇到的问题及解决办法

一、SQL执行兼容性错误

1. Catalog注释检索失败

收集架构详情时,执行SQL SELECT datname AS catalog_name, pg_catalog.obj_description(datlastsysoid, 'pg_database') AS catalog_comment FROM pg_catalog.pg_database WHERE datname = :catalog ; 检索catalog 'finance'注释失败,错误提示:ERROR: column "datlastsysoid" does not exist Position: 60

原因:Postgres 12及以后版本移除了datlastsysoid字段,SchemaSpy 6.2.4的pgsql模板未适配高版本Postgres。

解决:

  • 优先升级SchemaSpy到6.2.5及以上版本,官方已修复该兼容性问题
  • 临时修复:修改SchemaSpy的pgsql模板文件,将SQL中的datlastsysoid替换为oid(pg_database的主键是oid,obj_description可通过它获取数据库注释),修改后的SQL:
SELECT datname AS catalog_name, pg_catalog.obj_description(oid, 'pg_database') AS catalog_comment FROM pg_catalog.pg_database WHERE datname = :catalog ;

2. 存储过程/函数详情检索失败

检索存储过程/函数详情的SQL执行失败,错误提示:ERROR: column p.proisagg does not exist Hint: Perhaps you meant to reference the column "p.prolang". Position: 97

原因:Postgres 11及以后版本用prokind字段替代了proisagg(判断是否为聚合函数)等旧字段,SchemaSpy 6.2.4的模板未适配。

解决:

  • 同样优先升级SchemaSpy到兼容版本
  • 临时修复:修改函数检索的SQL模板,将p.proisagg替换为p.prokind = 'a'(prokind取值:'f'=普通函数,'a'=聚合函数,'w'=窗口函数,'p'=过程)

二、Graphviz相关问题

1. 权限拒绝错误

dot -Tpng:cairo relationships.real.compact.dot -orelationships.real.compact.png -Tcmapx: Error: dot: can't open relationships.real.compact.dot: Permission denied

原因:output目录权限不足,dot进程无法读取或写入文件。

解决:

  • 给output目录添加读写权限:Windows系统右键目录→属性→安全,给当前用户分配完全控制权限
  • 使用管理员权限打开命令提示符/PowerShell,再执行SchemaSpy生成命令

2. 单元格尺寸过小警告

dot -Tpng:cairo orphans.dot -oorphans.png -Tcmapx: Warning: cell size too small for content

原因:表字段或名称过长,默认布局下单元格无法容纳内容。

解决:

  • 在SchemaSpy命令中添加自定义布局参数,增大节点间距和单元格尺寸,示例命令:
java -jar schemaspy-6.2.4.jar -t pgsql -dp postgresql-42.7.5.jar -host db-ice-online-uat-central-1.rds.amazonaws.com -port 5432 -db fin -u pguser -p password -s public -o output -graphviz-l "rankdir=LR;nodesep=0.5;ranksep=0.8"
  • 也可以手动编辑生成的dot文件,调整node的width/height属性,或缩小字体大小

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:40:02