Эй, я изо всех сил пытаюсь определить точную причину ошибки, которая появляется в нашей среде выпуска.Похоже, что в Google эта проблема не решается.
Это сообщение об ошибке, которое мы получаем:
SQLSTATE [34000]: Неверное имя курсора: 7 ОШИБКА: portal "" не существует
Ошибка появляется только тогда, когда мы используем подготовленные операторы PDO.
Это настройка для нашей среды выпуска:
- pgpool 3.0.1 (серверная часть postgresql находится в режиме потоковой репликации!)
- PHP 5.3.5
- PostgreSQL 9.0
Редактировать: архитектура 64-битная.
Та же ошибка не проявляется в нашей тестовой среде (Редактировать: забыли упомянуть, стандартная тестовая среда используетPostgresql 9.0 без pgpool).Таким образом, я подозреваю, что pgpool хотя бы отчасти подозрительно.
Кто-нибудь знает, каковы возможные причины этой ошибки?
Редактировать: хорошо, вот пример кода, который вызывает ошибку.
$sql = 'SELECT * ';
$sql .= 'FROM "myTable" as "myStuff" ';
$sql .= 'WHERE "myTable"."status" = 1 ';
$sql .= 'AND "myTable"."myTableId" = :tableId ';
$sth = $this->_db->prepare($sql);
$sth->bindParam(':tableId', $tableId, PDO::PARAM_INT);
$sth->execute();
Редактировать: вывод некоторых файлов журнала;
Postgresql:
postgresql-Sun.log-129- ORDER BY "id"
postgresql-Sun.log:130:ERROR: portal "" does not exist
postgresql-Sun.log-131-ERROR: prepared statement "pdo_stmt_00000011" does not exist
postgresql-Sun.log-132-STATEMENT: DEALLOCATE pdo_stmt_00000011
postgresql-Mon.log-82- where "id" = 32024
postgresql-Mon.log:83:ERROR: portal "" does not exist
postgresql-Mon.log-84-ERROR: prepared statement "pdo_stmt_00000002" does not exist
postgresql-Mon.log-85-STATEMENT: DEALLOCATE pdo_stmt_00000002
pgpool:
LOG: pid 22071: Replication of node:1 is behind 2080 bytes from the primary server (node:0)
LOG: pid 22071: Replication of node:2 is behind 2080 bytes from the primary server (node:0)
LOG: pid 13499: pool_send_and_wait: Error or notice message from backend: : DB node id: 0 backend pid: 8470 statement: message: portal "" does not exist
LOG: pid 13499: pool_send_and_wait: Error or notice message from backend: : DB node id: 0 backend pid: 8470 statement: DEALLOCATE pdo_stmt_00000003 message: prepared statement "pdo_stmt_00000003" does not exist