Пытаюсь написать Драйвер ODBC PDO для CakePHP. Похоже, я подхожу все ближе и ближе, однако всякий раз, когда вызывается функция PDO, которая не любит, соединение сразу же сбрасывается, и я не могу получить никакой информации об ошибке. Я думаю, что это возможная настройка конфигурации, но я ничего не могу найти. Не знаю, поможет ли это, но вот конкретный фрагмент, с которым я работаю:
public function fetchResult() {
debug($this->_result);
if ($row = $this->_result->fetch()) { // ### HERE IS WHERE IT RESETS ###
debug($this->_connection->errorInfo());
exit;
$resultRow = array();
foreach ($this->map as $col => $meta) {
list($table, $column, $type) = $meta;
if ($table === 0 && $column === self::ROW_COUNTER) {
continue;
}
$resultRow[$table][$column] = $row[$col];
if ($type === 'boolean' && !is_null($row[$col])) {
$resultRow[$table][$column] = $this->boolean($resultRow[$table][$column]);
}
}
return $resultRow;
}
$this->_result->closeCursor();
return false;
}
Единственная разница между этим методом и оригинальная функция CakePHP fetchResult это то, что я не прохожу в PDO::FETCH_NUM
аргумент, но в любом случае все равно не работает!
Есть более глубокие проблемы.
Я уверен, что это ошибка: https://bugs.php.net/bug.php?id=64483
В моем случае проблема заключалась в том, что мой db включает текст с диакритическими знаками, отличным от американского. Измените мой выбор на "поле ВЫБРАТЬ" Сопоставить SQL_Latin1_General_CP1253_CI_AI ИЗ базы данных WHERE clauses »и работает!
У меня похожая проблема. Попробуйте проверить свои журналы ошибок на:
[примечание] дочерний pid 16759 сигнал выхода Ошибка сегментации (11)
Я не пытаюсь использовать PDO, но при использовании ODBC тоже получаются сбои. Это происходит только тогда, когда оператор SQL возвращает null. Люди предлагают использовать COALESCE (field, '') для возврата пустых строк, но это нелепый обходной путь. Также есть ошибка в PHP, которая также связана с этим, похоже, что в версии 5.3.11 была исправлена нулевая ошибка. Моя проблема теперь кажется несоответствием 64-битного и 32-битного программного обеспечения. Стоит также отметить, что сообщения об ошибках были только 64-битными.
Ссылки:
LAMP с использованием ODBC в DB2
https://bugs.php.net/bug.php?id=59405
https://bugs.php.net/bug.php?id=54007