phpPgAdmin 常見錯誤和問題的解決辦法

來源:互聯網
上載者:User

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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.