phpPgAdmin常见错误和问题的解决办法
2014-05-21来源:易贤网

这篇文章主要介绍了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技术专栏

推荐信息