👉 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文件)**的方法兼容。
步骤大概是:
- 找到你的 PowerDesigner 安装目录下的 DBMS 定义文件,路径像:
C:\Program Files\Sybase\PowerDesigner 16\Resource Files\DBMS\PostgreSQL 12.x (or PostgreSQL 9.x).dbms
- 打开对应的
.dbms
文件,比如是PostgreSQL 9.x.dbms
。 - 搜索里面用到
adsrc
的地方(大概在ColumnDefaultCode
这种地方)。 - 把用
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
- 保存
.dbms
文件,重新启动 PowerDesigner,然后重新反向工程。
⚡ 小提示:
- 备份原
.dbms
文件!改错了可能影响整个软件。 - 也可以新建一个复制的 DBMS 文件,比如叫
PostgreSQL 14.x.dbms
,这样不破坏原文件。
最后总结你的情况:
内容 | 说明 |
---|---|
工具版本 | PowerDesigner 16.5.0 |
错误原因 | adsrc字段被删除(PostgreSQL 12+不兼容) |
推荐解决方案(简单) | 升级到 PowerDesigner 16.6 SP05 |
推荐解决方案(复杂) | 手动修改 .dbms 文件 |
未来建议 | 以后PostgreSQL升级,开发工具也要同步考虑版本兼容性 |