我在 Windows 上运行 Apache 2.2、PHP 5.2 和 Postgres 8.2,我在 Apache 的 error.log 文件中看到一些奇怪的内容。有时,我会看到“行号 -1 超出范围 0..-1”的消息反复弹出。与该日志文件中的所有其他行不同,这里没有时间戳或日志级别。只有那个确切的字符串。
通过 Google 搜索,我发现该消息逐字逐句都是常见的 Postgres 错误消息,但不是 Apache 错误。我多次看到这种情况,而且是在不同的服务器上。但我似乎无法重现它。我尝试通过 PHP 向 Postgres 抛出各种错误百出的数据库查询和结果集查询,但似乎没有一个能触发将该行写入日志文件。Postgres 错误有可能出现在我的 Apache 日志文件中吗?如果是,是怎么回事?什么会触发这样的错误消息?
谢谢!
答案1
这个错误是由 PostgreSQL 抛出的,但它是一条发给客户端的消息。在本例中是你的 PHP 脚本。这个脚本试图获取一些不存在的信息。
来自邮件列表:
如果程序调用 PQgetvalue()、PQgetlength() 或 PQgetisnull() 时行号为 -1,且结果中没有行,则会发生上述错误。
您的脚本是否总是在对结果集执行某些操作之前检查结果集?