一、安裝錯誤
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 檔案。