這篇文章主要介紹了phpPgAdmin常見錯誤和問題的解決辦法,如安裝錯誤、登陸錯誤、轉儲功能、其它錯誤和問題等,需要的朋友可以參考下
一、安裝錯誤
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在基于RedHat或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:我總是得到一個"Loginfailed",我確定我使用了正確的用戶名和密碼!A:檢查一下PostgreSQL日志,它會告訴你登陸失敗的準確原因。
編輯PostgreSQL的"data"目錄下的pg_hba.conf文件,確保你擁有訪問數據庫服務器的正確權限。如果你將phpPgAdmin安裝在一個不同于PostgreSQL服務器所在的機器上,另一個可能的原因是PostgreSQL在啟動時沒有啟用TCP/IPsockets。
要啟用它,可以編輯postgresql.conf文件,將如下行#tcpip_socket=false修改為tcpip_socket=true然后重啟PostgreSQL。
[譯者注]從8.0版本開始,原來的virtual_host和tcpip_socket配置指令已經被listen_addresses代替。
請參閱PostgreSQL獲取更多對listen_addresses指令的解釋。Q:有些用戶會得到"Logindisallowedforsecurity"錯誤信息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:最簡單的辦法是使用PostgreSQL7.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:你需要安裝PostgreSQL8.0forWindows或更高的版本。
可以到http://www.postgresql.org/ftp/win32/去下載。
安裝好以后可以在config.inc.php中設置pg_dump和pg_dumpall的位置。Q:為什么我不能在SQL窗口重新加載轉儲出來的SQL腳本?A:在執行SQL腳本時有如下限制:*只有上傳的SQL腳本可以包含COPY命令,并且必須使用PHP4.2以上版本。*'psql'命令,比如'\connect'根本不會工作。*多行SQL語句同樣不會工作,比如:CREATETABLEexample(aINTEGER);*在執行腳本的過程中不能切換數據庫和用戶。我們打算在將來的版本中減少這些限制,但是對于PostgreSQL本身的限制無能為力,因此我們推薦你使用'psql'工具來恢復完整的SQL轉儲結果。五、其它問題Q:當插入行的時候,'Value(值)'或'Expression(表達式)'選框是什么意思?A:選擇'Expression'表示你可以使用函數、運算符、字段名等等,同時你需要正確的使用引號界定字符串值。
選擇'Value'則表示無論你輸入的內容是什么,都將按原樣插入數據庫中。Q:為什么表的'Info(信息)'頁始終不顯示任何信息?A:'Info'頁用于顯示其它表到這個表的外鍵以及來自PostgreSQL的統計信息。
而狀態統計程序默認狀態下并未啟用。要啟用它請查看postgresql.conf文件中的stats_*選項。
將這些選項全部設為'true'并重啟PostgreSQL即可。Q:為什么我不能下載SQL窗口中執行的查詢的結果數據?A:你需要選中'Paginateresults'選項以允許下載。Q:我想幫助phpPgAdmin的開發,我應當怎么做?A:我們非常愿意得到你的幫助!請閱讀DEVELOPERS和TRANSLATORS文件。
更多信息請查看IT技術專欄