程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> PostgreSQL >> phpPgAdmin 常見錯誤和問題的解決辦法

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

編輯:PostgreSQL

一、安裝錯誤
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 文件。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved