[轉]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 解決方法

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章