這篇文章主要介紹了phpPgAdmin常見錯誤和問題的解決辦法,如安裝錯誤、登陸錯誤、轉(zhuǎn)儲功能、其它錯誤和問題等,需要的朋友可以參考下
一、安裝錯誤
Q:我已經(jīng)安裝了phpPgAdmin,但是當我企圖使用它的時候,我得到一個錯誤說我安裝的PHP沒有正確的編譯數(shù)據(jù)庫支持。A:這個信息的意思是你的PHP沒有將PostgreSQL支持編譯進去。正確的配置選項是'--with-pgsql'。
請仔細閱讀PHP手冊以獲得關(guān)于如何編譯PHP的更詳細的信息。PostgreSQL支持可以編譯為PHP的動態(tài)擴展模塊,因此如果你使用的是一個預(yù)編譯版本的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發(fā)行版上,
該PHP擴展已經(jīng)自動的在/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文件,確保你擁有訪問數(shù)據(jù)庫服務(wù)器的正確權(quán)限。如果你將phpPgAdmin安裝在一個不同于PostgreSQL服務(wù)器所在的機器上,另一個可能的原因是PostgreSQL在啟動時沒有啟用TCP/IPsockets。
要啟用它,可以編輯postgresql.conf文件,將如下行#tcpip_socket=false修改為tcpip_socket=true然后重啟PostgreSQL。
[譯者注]從8.0版本開始,原來的virtual_host和tcpip_socket配置指令已經(jīng)被listen_addresses代替。
請參閱PostgreSQL獲取更多對listen_addresses指令的解釋。Q:有些用戶會得到"Logindisallowedforsecurity"錯誤信息A:phpPgAdmin默認禁止空密碼或特定用戶(pgsql,postgres,root,administrator)登陸。
在改變這個默認行為(將config.inc.php文件中的$conf['extra_login_security']設(shè)置為false)之前,請首先仔細閱讀PostgreSQL文檔中關(guān)于客戶端認證的部分,并充分理解如何修改PostgreSQL的pg_hba.conf配置文件以啟用密碼保護本地連接。Q:我可以使用任意密碼登陸!A:PostgreSQL默認運行于"信任模式"。意思是對于本地連接不檢查密碼。
我們強烈建議你修改pg_hba.conf文件,并將登陸類型改為'md5'。
注意,一旦你將'local'登陸類型修改為'md5',你就可能需要在啟動PostgreSQL的時候輸入密碼。
要避開它,可以使用一個.pgpass文件,相關(guān)說明請參考PostgreSQL文檔libpq部分。
三、其它錯誤
Q:當我通過表單向數(shù)據(jù)庫輸入非ASCII數(shù)據(jù)時,它被當著十六進制數(shù)或Ӓ格式插入。A:你沒有使用正確的編碼創(chuàng)建數(shù)據(jù)庫。
這個問題會出現(xiàn)在你企圖向一個SQL_ASCII數(shù)據(jù)庫輸入元音變音(umlaut),或者向EUC-JP數(shù)據(jù)庫輸入SJIS字符的時候。Q:當我drop并重建一個同名的表的時候,失敗了。A:最簡單的辦法是使用PostgreSQL7.3以上的版本。Q:當我瀏覽一個表的時候,'edit(編輯)'和'delete(刪除)'鏈接并沒有顯示出來。A:phpPgAdmin將按順序使用如下值作為行唯一標識符1.主鍵
2.唯一索引(不能是部分索引或表達式索引)
3.OID列(需要連續(xù)掃描以進行更新,除非你在OID列上建立了索引)此外,唯一索引中的任何NULL值都會導致那一行不可編輯。同樣,因為在同一張表中OID可能會重復,phpPgAdmin將會在改變那一行以后進行確認修改的是否確實是那一行,否則將進行回滾。
四、轉(zhuǎn)儲相關(guān)
Q:如何啟用數(shù)據(jù)庫轉(zhuǎn)儲功能?A:你需要配置config.inc.php文件,以指定pg_dump和pg_dumpall的位置。
這樣數(shù)據(jù)庫導出功能將會顯示出來。Q:我想在Windows上使用pg_dump,我應(yīng)當?shù)侥睦锵螺dpg_dump.exe?A:你需要安裝PostgreSQL8.0forWindows或更高的版本。
可以到http://www.postgresql.org/ftp/win32/去下載。
安裝好以后可以在config.inc.php中設(shè)置pg_dump和pg_dumpall的位置。Q:為什么我不能在SQL窗口重新加載轉(zhuǎn)儲出來的SQL腳本?A:在執(zhí)行SQL腳本時有如下限制:*只有上傳的SQL腳本可以包含COPY命令,并且必須使用PHP4.2以上版本。*'psql'命令,比如'\connect'根本不會工作。*多行SQL語句同樣不會工作,比如:CREATETABLEexample(aINTEGER);*在執(zhí)行腳本的過程中不能切換數(shù)據(jù)庫和用戶。我們打算在將來的版本中減少這些限制,但是對于PostgreSQL本身的限制無能為力,因此我們推薦你使用'psql'工具來恢復完整的SQL轉(zhuǎn)儲結(jié)果。五、其它問題Q:當插入行的時候,'Value(值)'或'Expression(表達式)'選框是什么意思?A:選擇'Expression'表示你可以使用函數(shù)、運算符、字段名等等,同時你需要正確的使用引號界定字符串值。
選擇'Value'則表示無論你輸入的內(nèi)容是什么,都將按原樣插入數(shù)據(jù)庫中。Q:為什么表的'Info(信息)'頁始終不顯示任何信息?A:'Info'頁用于顯示其它表到這個表的外鍵以及來自PostgreSQL的統(tǒng)計信息。
而狀態(tài)統(tǒng)計程序默認狀態(tài)下并未啟用。要啟用它請查看postgresql.conf文件中的stats_*選項。
將這些選項全部設(shè)為'true'并重啟PostgreSQL即可。Q:為什么我不能下載SQL窗口中執(zhí)行的查詢的結(jié)果數(shù)據(jù)?A:你需要選中'Paginateresults'選項以允許下載。Q:我想幫助phpPgAdmin的開發(fā),我應(yīng)當怎么做?A:我們非常愿意得到你的幫助!請閱讀DEVELOPERS和TRANSLATORS文件。
更多信息請查看IT技術(shù)專欄