PDO ODBC错误只是重置连接

试图为CakePHP编写一个ODBC PDO驱动程序 。 好像我越来越近,但是每当一个PDO函数被调用,它不喜欢连接就立即得到重置,我无法得到任何错误信息。 我想这可能是一个可能的configuration设置,但我找不到任何东西。 我不知道这是否会有所帮助,但这里是我正在使用的特定片段:

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

我遇到类似的问题。 尝试检查您的错误日志:

[注意]儿童pid 16759退出信号分割故障(11)

我不想使用PDO,但使用ODBC我也得到崩溃。 只有当一个SQL语句返回null时才会发生。 人们build议使用COALESCE(field,'')来返回空string,但这是一个荒谬的解决方法。 在PHP中也存在一个与此有关的bug,看起来像5.3.11是空错误被纠正的时候。 现在我的问题似乎是64位和32位软件的不匹配。 另一个值得注意的事情是,报告的错误只有64位。

链接:
使用ODBC到DB2的LAMP
https://bugs.php.net/bug.php?id=59405
https://bugs.php.net/bug.php?id=54007

在我的情况下,问题是因为我的数据库包括重音非美国文字。 将我的select更改为“SELECT字段从数据库的WHERE子句整理SQL_Latin1_General_CP1253_CI_AI ”,并工作!