服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - PostgreSQL - phpPgAdmin 常见错误和问题的解决办法

phpPgAdmin 常见错误和问题的解决办法

2020-04-24 15:50数据库教程网 PostgreSQL

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

在基于 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 文件。

延伸 · 阅读

精彩推荐
  • PostgreSQLRDS PostgreSQL一键大版本升级技术解密

    RDS PostgreSQL一键大版本升级技术解密

    一、PostgreSQL行业位置 (一)行业位置 在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的...

    未知1192023-05-07
  • PostgreSQLpostgresql 中的to_char()常用操作

    postgresql 中的to_char()常用操作

    这篇文章主要介绍了postgresql 中的to_char()常用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    J符离13432021-04-12
  • PostgreSQLPostgreSQL标准建表语句分享

    PostgreSQL标准建表语句分享

    这篇文章主要介绍了PostgreSQL标准建表语句分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    码上得天下7962021-02-27
  • PostgreSQLPostgresql开启远程访问的步骤全纪录

    Postgresql开启远程访问的步骤全纪录

    postgre一般默认为本地连接,不支持远程访问,所以如果要开启远程访问,需要更改安装文件的配置。下面这篇文章主要给大家介绍了关于Postgresql开启远程...

    我勒个去6812020-04-30
  • PostgreSQL深入理解PostgreSQL的MVCC并发处理方式

    深入理解PostgreSQL的MVCC并发处理方式

    这篇文章主要介绍了深入理解PostgreSQL的MVCC并发处理方式,文中同时介绍了MVCC的缺点,需要的朋友可以参考下 ...

    PostgreSQL教程网3622020-04-25
  • PostgreSQL分布式 PostgreSQL之Citus 架构

    分布式 PostgreSQL之Citus 架构

    节点 Citus 是一种 PostgreSQL 扩展,它允许数据库服务器(称为节点)在“无共享(shared nothing)”架构中相互协调。这些节点形成一个集群,允许 PostgreSQL 保存比单...

    未知802023-05-07
  • PostgreSQLPostgresql查询效率计算初探

    Postgresql查询效率计算初探

    这篇文章主要给大家介绍了关于Postgresql查询效率计算的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Postgresql具有一定的参考学习价...

    轨迹4622020-05-03
  • PostgreSQLpostgresql 数据库中的数据转换

    postgresql 数据库中的数据转换

    postgres8.3以后,字段数据之间的默认转换取消了。如果需要进行数据变换的话,在postgresql数据库中,我们可以用"::"来进行字段数据的类型转换。...

    postgresql教程网12482021-10-08