列出对象时的 Pimcore 异常
Posted
技术标签:
【中文标题】列出对象时的 Pimcore 异常【英文标题】:Pimcore exception when listing objects 【发布时间】:2016-02-15 06:28:00 【问题描述】:我在我的服务器(但不是本地)上的线路上收到 Pimcore 异常:
$entries = new Object\CarouselImage\Listing();
Stacktrace 的异常是:
Fatal error: Uncaught exception 'Zend_Db_Statement_mysqli_Exception' with message 'Mysqli statement execute error :
Prepared statement needs to be re-prepared' in /www/doc/www.eastmeetswest.eu/www/pimcore/lib/Zend/Db/Statement/Mysqli.php:214
Stack trace:
#0 /www/doc/www.eastmeetswest.eu/www/pimcore/lib/Zend/Db/Statement.php(303): Zend_Db_Statement_Mysqli->_execute(Array)
#1 /www/doc/www.eastmeetswest.eu/www/pimcore/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#2 /www/doc/www.eastmeetswest.eu/www/pimcore/lib/Zend/Db/Adapter/Abstract.php(737): Zend_Db_Adapter_Abstract->query('SELECT object_6...', Array)
#3 [internal function]: Zend_Db_Adapter_Abstract->fetchAll('SELECT object_6...', Array)
#4 /www/doc/www.eastmeetswest.eu/www/pimcore/lib/Pimcore/Resource/Wrapper.php(263): call_user_func_array(Array, Array)
#5 /www/doc/www.eastmeetswest.eu/www/pimcore/lib/Pimcore/Resource/Wrapper.php(233): Pimcore\Resource\Wrapper->callResourceMethod('fetchAll', Array)
#6 /www/doc/www.eastmeetswest.eu/www/pimcore/ in /www/doc/www.eastmeetswest.eu/www/pimcore/lib/Zend/Db/Statement/Mysqli.php on line 214
完全相同的代码在本地主机上完成了它应该做的所有事情,如果我使用以下方法遍历对象:
$entry = Object_CarouselImage::getById($id);
一切正常。
【问题讨论】:
编辑:我知道这可能是“某些 MySQL 服务器的已知问题”。但是除了重新启动服务器之外还有其他解决方法吗? 【参考方案1】:可能最简单的解决方案是切换到 Pdo_Mysql。 在 database 节点下的 /website/var/config/system.xml 中更改此行
<adapter>Pdo_Mysql</adapter>
这可能会导致一些其他问题,但请在切换后彻底测试。
【讨论】:
任何想法为什么适配器更改可以解决此问题? mysqli有什么问题? 这实际上并没有解决问题,而是规避了它。 Pdo_Mysql 是 Mysqli 的替代品,两者都具有相似的功能,几乎没有区别。最初的问题可能是由特定版本的 MySQL、mysqli 或 MySQL 配置中的错误引起的。如果 InnoDB 被禁用,则可能会导致此问题,如下所述:xenforo.com/community/threads/error-on-install.17901以上是关于列出对象时的 Pimcore 异常的主要内容,如果未能解决你的问题,请参考以下文章