一、安裝錯誤
Q: 我已經安裝了 phpPgAdmin ,但是當我企圖使用它的時候,
我得到一個錯誤說我安裝的 PHP 沒有正確的編譯數據庫支持。
A: 這個信息的意思是你的 PHP 沒有將 PostgreSQL 支持編譯進去。正確的配置選項是 '--with-pgsql' 。
請仔細閱讀 PHP 手冊以獲得關於如何編譯 PHP 的更詳細的信息。
PostgreSQL 支持可以編譯為 PHP 的動態擴展模塊,
因此如果你使用的是一個預編譯版本的 PHP (Linux下的RPM包或Windows下的二進制文件之類),
也許你只需要做一件事就可以了:
編輯 php.ini 文件並取消如下兩行的注釋:
(Windows下通常位於 C:\WINDOWS 或 C:\WINNT 目錄,Linux 下通常位於 /etc/php.ini)
;extension=php_pgsql.dll ;Windows
;extension=pgsql.so ;Linux
使它變成:
extension=php_pgsql.dll ;Windows
extension=pgsql.so ;Linux
在基於 Red Hat 或 Fedora 的 Linux 發行版上,
該 PHP 擴展已經自動的在 /etc/php.d/pgsql.ini 文件中進行了配置,
只要安裝 php-pgsql 軟件包即可。
Q: 在 Windows 上使用 phpPgAdmin 時,我得到一個如下警告信息:
"Warning: session_start() [function.session-start]:
open(/tmp\sess_5a401ef1e67fb7a176a95236116fe348, O_RDWR) failed"
A: 你需要修改你的 PHP.INI 文件(通常位於 c:\windows 目錄)並將如下行
session.save_path = "/tmp"
修改為
session.save_path = "c:\windows\temp"
並確保 c:\windows\temp 目錄確實存在。
二、登陸錯誤
Q: 我總是得到一個"Login failed",我確定我使用了正確的用戶名和密碼!
A: 檢查一下 PostgreSQL 日志,它會告訴你登陸失敗的准確原因。
編輯 PostgreSQL 的"data"目錄下的 pg_hba.conf 文件,
確保你擁有訪問數據庫服務器的正確權限。
如果你將 phpPgAdmin 安裝在一個不同於 PostgreSQL 服務器所在的機器上,
另一個可能的原因是 PostgreSQL 在啟動時沒有啟用 TCP/IP sockets 。
要啟用它,可以編輯 postgresql.conf 文件,將如下行
#tcpip_socket = false
修改為
tcpip_socket = true
然後重啟 PostgreSQL 。
[譯者注]從 8.0 版本開始,原來的 virtual_host 和 tcpip_socket 配置指令已經被 listen_addresses 代替。
請參閱 PostgreSQL 獲取更多對 listen_addresses 指令的解釋。
Q: 有些用戶會得到 "Login disallowed for security" 錯誤信息
A: phpPgAdmin 默認禁止空密碼或特定用戶(pgsql, postgres, root, administrator)登陸。
在改變這個默認行為(將 config.inc.php 文件中的 $conf['extra_login_security'] 設置為 false)之前,
請首先仔細閱讀 PostgreSQL 文檔中關於客戶端認證的部分,
並充分理解如何修改 PostgreSQL 的 pg_hba.conf 配置文件以啟用密碼保護本地連接。
Q: 我可以使用任意密碼登陸!
A: PostgreSQL 默認運行於"信任模式"。意思是對於本地連接不檢查密碼。
我們強烈建議你修改 pg_hba.conf 文件,並將登陸類型改為 'md5'。
注意,一旦你將'local'登陸類型修改為'md5',你就可能需要在啟動 PostgreSQL 的時候輸入密碼。
要避開它,可以使用一個 .pgpass 文件,相關說明請參考 PostgreSQL 文檔 libpq 部分。
三、其它錯誤
Q: 當我通過表單向數據庫輸入非ASCII數據時,它被當著十六進制數或 Ӓ 格式插入。
A: 你沒有使用正確的編碼創建數據庫。
這個問題會出現在你企圖向一個 SQL_ASCII 數據庫輸入元音變音(umlaut),
或者向 EUC-JP 數據庫輸入 SJIS 字符的時候。
Q: 當我 drop 並重建一個同名的表的時候,失敗了。
A: 最簡單的辦法是使用 PostgreSQL 7.3 以上的版本。
Q: 當我浏覽一個表的時候,'edit(編輯)'和'delete(刪除)'鏈接並沒有顯示出來。
A: phpPgAdmin 將按順序使用如下值作為行唯一標識符
1. 主鍵
2. 唯一索引(不能是部分索引或表達式索引)
3. OID 列(需要連續掃描以進行更新,除非你在 OID 列上建立了索引)
此外,唯一索引中的任何 NULL 值都會導致那一行不可編輯。同樣,因為在同一張表中 OID 可能會重復,
phpPgAdmin 將會在改變那一行以後進行確認修改的是否確實是那一行,否則將進行回滾。
四、轉儲相關
Q: 如何啟用數據庫轉儲功能?
A: 你需要配置 config.inc.php 文件,以指定 pg_dump 和 pg_dumpall 的位置。
這樣數據庫導出功能將會顯示出來。
Q: 我想在 Windows 上使用 pg_dump ,我應當到哪裡下載 pg_dump.exe ?
A: 你需要安裝 PostgreSQL 8.0 for Windows 或更高的版本。
可以到 http://www.postgresql.org/ftp/win32/ 去下載。
安裝好以後可以在 config.inc.php 中設置 pg_dump 和 pg_dumpall 的位置。
Q: 為什麼我不能在 SQL 窗口重新加載轉儲出來的 SQL 腳本?
A: 在執行 SQL 腳本時有如下限制:
* 只有上傳的 SQL 腳本可以包含 COPY 命令,並且必須使用 PHP 4.2 以上版本。
* 'psql' 命令,比如 '\connect' 根本不會工作。
* 多行 SQL 語句同樣不會工作,比如:
CREATE TABLE example (
a INTEGER
);
* 在執行腳本的過程中不能切換數據庫和用戶。
我們打算在將來的版本中減少這些限制,但是對於 PostgreSQL 本身的限制無能為力,
因此我們推薦你使用'psql'工具來恢復完整的 SQL 轉儲結果。
五、其它問題
Q: 當插入行的時候,'Value(值)' 或 'Expression(表達式)' 選框是什麼意思?
A: 選擇'Expression'表示你可以使用函數、運算符、字段名等等,
同時你需要正確的使用引號界定字符串值。
選擇'Value'則表示無論你輸入的內容是什麼,都將按原樣插入數據庫中。
Q: 為什麼表的'Info(信息)'頁始終不顯示任何信息?
A: 'Info'頁用於顯示其它表到這個表的外鍵以及來自 PostgreSQL 的統計信息。
而狀態統計程序默認狀態下並未啟用。要啟用它請查看 postgresql.conf 文件中的 stats_* 選項。
將這些選項全部設為'true'並重啟 PostgreSQL 即可。
Q: 為什麼我不能下載 SQL 窗口中執行的查詢的結果數據?
A: 你需要選中 'Paginate results' 選項以允許下載。
Q: 我想幫助 phpPgAdmin 的開發,我應當怎麼做?
A: 我們非常願意得到你的幫助!請閱讀 DEVELOPERS 和 TRANSLATORS 文件。