[转]Power Designer 连接 PostgreSQL 逆向工程若干问题

来源:http://whypro.github.io/hystars/misc/power-design-postgresql-reverse-engineering.html

首先说说系统环境,Windows 7 64 位系统,PowerDesigner 16.5,远程 PostgreSQL 9.4 数据库,JDK 为 64 位的 Java 8。

笔者依次点击: Database->Configure Connections...->Connection Profiles->Add Datasource

输入以下配置:

Connection type: JDBC
DBMS type: PostgreSQL
JDBC driver class: org.postgresql.Driver
JDBC connection URL: jdbc:postgresql://<your_host>:5432/<your_database>

但是点击 Test connection 时出现了问题。

Could not Initialize JavaVM!

原因分析

这个原因很简单,笔者安装的是 64 位的 JDK 和 JRE,而 Power Designer 是 32 位的,其 JDBC 无法在 64 位的 Java 虚拟机上运行。

解决

从 Oracle 官网上下载 32 位的 JDK,安装时不要自动配置环境变量,因为笔者系统里的其他程序还要运行在 64 位虚拟机上,能不能只让 Power Designer 在 32 位虚拟机上运行呢?下一步将完美解决这个问题。

Non SQL Error : Could not load class org.postgresql.Driver

原因分析

原因是找不到 PostgreSQL 的 Java 驱动。

解决

访问 http://jdbc.postgresql.org/download.html,下载对应的 jar 包(笔者下载的是 postgresql-9.4.1208.jar)。

将下载下来的 jar 包放入某个目录,笔者放在了 D:ToolsSybasePowerDesigner 16SQL Anywhere 12 drivers 这个目录,当然你可以放到任意目录。

然后在 Power Designer 安装目录新建一个 PowerDesigner.bat 文件,输入以下内容:

set JAVA_HOME="C:\Program Files (x86)\Java\jdk1.8.0_77"
set CLASSPATH="%JAVA_HOME%\lib\jt.jar;%JAVA_HOME%\lib\tools.jar;D:\Tools\Sybase\PowerDesigner 16\SQL Anywhere 12 drivers\postgresql-9.4.1208.jar"
cd "D:\Tools\Sybase\PowerDesigner 16"
start /b PdShell16.exe
exit

其中 JAVA_HOME 是上一步安装的 32 位 JDK 的目录,CLASSPATH 包含那个 postgresql 的 Java 驱动 jar 包。

保存后,右键发送到桌面快捷方式即可,也可以给它换个图标,以后运行时双击这个快捷方式就可以了。

Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t

然而成功连接数据库后建模时出现了“不良的类型值问题”,解决方法如下:

依次点击

Database->Edit Current DBMS...->General Tab->PostgreSQL 9.x->Script->Objects

或者

Tools->Edit Current DBMS->PostgreSQL 9.x->Script->Objects

将 Column->SqlListQuery 选项里 SELECT 中的 c.attnotnull 替换为 cast(nullif(c.attnotnull, false) as varchar(1))

将 Key->SqlListQuery 选项里 SELECT 中的 x.indisprimary 替换为 cast(nullif(x.indisprimary, false) as varchar(1))

保存即可。

参考文章:

用PowerDesigner远程连接PostgreSQL数据库

PowerDesigner 16.5 反向PostgreSQL9.01 中 Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t 解决方法

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值