我正在更新一些遗留的 PHP 代码并尝试获得一些不错的错误记录。现在对数据库的所有调用都通过这个函数:
private function dbQuery($sql) {
if (DEBUG) print("\n" . $sql . "\n");
$result = pg_query($this->dbh, $sql);
if ($result == FALSE) print("DB Error: " . pg_last_error($this->dbh) . "\n");
return $result;
}
但是,至少在一种情况下,错误本身就出现在控制台中(作为 PHP 警告),而 pg_last_error 什么也不返回(即使 pg_query 调用的结果是 FALSE)。实际输出:
insert into pull_count (show_pull_item_id, count_pulled, created, modified) values (1076028, 1, NOW(), NOW())
PHP Warning: pg_query(): Query failed: ERROR: permission denied for relation pull_count in /var/www/html/src/backend/engine.php on line 1740
DB Error:
在调用函数中,我们再次调用 pg_last_error(),我们仍然一无所获。
所以……有什么关系?为什么错误会进入控制台,而不是 pg_last_error - 我该如何解决?