Ошибка pg_query при переходе непосредственно на консоль, а pg_last_error ничего не возвращает

Я обновляю некоторый устаревший код 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 — и как я могу это исправить?

0

Решение

Хорошо, оказывается, что я идиот … код не доставлялся на сервер должным образом, поэтому я тестировал старый код, который выглядел так:

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() . "\n");
return $result;
}

Обратите внимание, что не удалось включить дескриптор соединения с БД в вызов pg_last_error. Вот почему он не смог вернуть какой-либо результат.

После исправления я все еще получаю предупреждение PHP в консоли, но я также получить правильный pg_last_error, так что с миром все в порядке.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]