Power Designer 连接 PostgreSQL 逆向工程若干问题解决笔记

首先说说系统环境,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)); adsrc替换为adbin

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

保存即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liu854046222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值