列出对象时的 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 异常的主要内容,如果未能解决你的问题,请参考以下文章

PIMCore - CSV 导入映射父对象和对象标题

Pimcore - 如何将自定义按钮添加到对象树菜单

Pimcore - 相关对象值没有得到

如何扩展 pimcore 对象模型和他的资源类

如何在 Pimcore 中显示本地化的数据对象字段值?

使用 php 脚本将 pimcore 中的现有数据对象导出到 XML 文件