powerdesigner逆向posgresql数据库失败修复

👉 PowerDesigner 16.5.0 原生并不支持 PostgreSQL 12及以后的版本。
(而你当前的数据库,大概率是 PostgreSQL 12、13、14或者15)

在 PostgreSQL 12 开始,adsrc 字段就被彻底取消了,而 PowerDesigner 16.5 仍然在反向工程时访问它,因此就出错了。


解决方案给你列清楚:

方案一:升级 PowerDesigner

  • 升级到 PowerDesigner 16.6 SP05 或更高版本(就是16.6 +最新的Service Pack补丁)。
  • 16.6 SP05开始,官方开始适配PostgreSQL 12及以上。
  • 缺点是,正版授权的话需要升级License,否则试用版或者找补丁升级。

方案二:修复 PowerDesigner 里的数据库反向工程模板

如果你不能升级,那可以用**修改 PowerDesigner元数据文件(DBMS文件)**的方法兼容。

步骤大概是:

  1. 找到你的 PowerDesigner 安装目录下的 DBMS 定义文件,路径像: C:\Program Files\Sybase\PowerDesigner 16\Resource Files\DBMS\PostgreSQL 12.x (or PostgreSQL 9.x).dbms
  2. 打开对应的 .dbms 文件,比如是 PostgreSQL 9.x.dbms
  3. 搜索里面用到 adsrc 的地方(大概在 ColumnDefaultCode 这种地方)。
  4. 把用 adsrc 的地方改成用 pg_get_expr(adbin, adrelid)

示例(原版):

select adsrc::varchar from pg_attrdef f where f.adrelid = t.oid and f.adnum = c.attnum

修改成:

select pg_get_expr(f.adbin, f.adrelid)::varchar from pg_attrdef f where f.adrelid = t.oid and f.adnum = c.attnum
  1. 保存 .dbms 文件,重新启动 PowerDesigner,然后重新反向工程。

⚡ 小提示:

  • 备份原 .dbms 文件!改错了可能影响整个软件。
  • 也可以新建一个复制的 DBMS 文件,比如叫 PostgreSQL 14.x.dbms,这样不破坏原文件。

最后总结你的情况:

内容说明
工具版本PowerDesigner 16.5.0
错误原因adsrc字段被删除(PostgreSQL 12+不兼容)
推荐解决方案(简单)升级到 PowerDesigner 16.6 SP05
推荐解决方案(复杂)手动修改 .dbms 文件
未来建议以后PostgreSQL升级,开发工具也要同步考虑版本兼容性

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注