來源: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數據庫