在 Magento 中加载日志访问者集合时收到“查询为空”错误
Posted
技术标签:
【中文标题】在 Magento 中加载日志访问者集合时收到“查询为空”错误【英文标题】:Receiving "Query was empty" error when loading log visitor collection in Magento 【发布时间】:2012-07-06 17:16:01 【问题描述】:如何使用 Log/Visitor 模型检索访问者集合?我试过使用下面的代码......
<?php
error_reporting(E_ALL);
ini_set('display_errors',TRUE);
$root = $_SERVER['DOCUMENT_ROOT'];
require_once $root.'/app/Mage.php';
Mage::app('default');
$visitors = Mage::getModel('log/visitor')->getCollection()->load();
?>
但它返回一个错误,其中的摘录是...
SQLSTATE[42000]: Syntax error or access violation: 1065 Query was empty
在我将 'load()' 方法添加到链中之前,查询不会引发任何错误。我的问题类似于magento visitor logs,但该代码示例缺少 load(),唯一的答案是直接使用资源模型,我认为没有必要。
更新:
正在使用的 Magento 版本是 1.4.1.1。完整的异常跟踪:
致命错误:在 /home/dev_fluid/public_html/lib/Zend/Db/Statement/Pdo.php 中出现消息“SQLSTATE[42000]:语法错误或访问冲突:1065 查询为空”的未捕获异常“Zend_Db_Statement_Exception”: 234 堆栈跟踪:#0 /home/dev_fluid/public_html/lib/Zend/Db/Statement.php(300):Zend_Db_Statement_Pdo->_execute(Array) #1 /home/dev_fluid/public_html/lib/Zend/Db/Adapter/ Abstract.php(468): Zend_Db_Statement->execute(Array) #2 /home/dev_fluid/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('', Array) #3 /home/dev_fluid/public_html/lib/Varien/Db/Adapter/Pdo/mysql.php(333): Zend_Db_Adapter_Pdo_Abstract->query('', Array) #4 /home/dev_fluid/public_html/lib/Zend/Db /Adapter/Abstract.php(706): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array) #5 /home/dev_fluid/public_html/lib/Varien/Data/Collection/Db.php(707): Zend_Db_Adapter_Abstract->fetchAll (对象(Varien_Db_Select),数组)#6 /home/dev_fluid/public_html/lib/Varien/Data/Col lection/Db.php(620): Varien_Data_Collect 在 /home/dev_fluid/public_html/lib/Zend/Db/Statement/Pdo.php 的第 234 行
使用 Jurgen 的 getTraceAsString() 方法的新跟踪:
#0 /home/dev_fluid/public_html/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/dev_fluid/public_html/lib/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#2 /home/dev_fluid/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('', Array)
#3 /home/dev_fluid/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(333): Zend_Db_Adapter_Pdo_Abstract->query('', Array)
#4 /home/dev_fluid/public_html/lib/Zend/Db/Adapter/Abstract.php(706): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#5 /home/dev_fluid/public_html/lib/Varien/Data/Collection/Db.php(707): Zend_Db_Adapter_Abstract->fetchAll(Object(Varien_Db_Select), Array)
#6 /home/dev_fluid/public_html/lib/Varien/Data/Collection/Db.php(620): Varien_Data_Collection_Db->_fetchAll(Object(Varien_Db_Select))
#7 /home/dev_fluid/public_html/lib/Varien/Data/Collection/Db.php(590): Varien_Data_Collection_Db->getData()
#8 /home/dev_fluid/public_html/app/code/core/Mage/Log/Model/Mysql4/Visitor/Collection.php(300): Varien_Data_Collection_Db->load(false, false)
#9 /home/dev_fluid/public_html/andy/visitor.php(11): Mage_Log_Model_Mysql4_Visitor_Collection->load()
#10 main
【问题讨论】:
您检索访问者集合的代码应该可以正常工作。在此处发布异常跟踪和使用的 Magento 版本可能会有所帮助。 您发布的预期轨迹不完整;缺少整个引导程序(main 等)。 嗨 Jurgen - 请原谅我的无知,但是如何生成相关的调试信息?我目前打开了显示错误,打开了开发者模式并设置了错误/local.xml 文件。 通常你启用的足以获得异常跟踪。看起来您复制/粘贴不完整,或者它以某种方式被切断。 Magento 跟踪的最后三行通常包含Mage.php
、index.php
和main
。你的没有。因此,我们无法遵循问题所采用的流程。看看例如http://***.com/q/10907649/693207 查看完整跟踪通常的样子。
嗨@Jürgen Thelen - 我不知道为什么我得到的跟踪不是通常的格式。我什至尝试捕捉错误并使用echo Varien_Debug::backtrace(true, true);
,但只是空白。我想我可能不得不放弃了?!
【参考方案1】:
请将您的代码更改为:
<?php
error_reporting(E_ALL);
ini_set('display_errors',TRUE);
$root = $_SERVER['DOCUMENT_ROOT'];
require_once $root.'/app/Mage.php';
Mage::app('default');
$visitors = Mage::getModel('log/visitor')->getCollection();
try
$x = $visitors->load();
die('no exception');
catch (Exception $e)
var_dump($e->getTraceAsString());
如果异常发生在 load()
方法中,这应该会给你一个完整的跟踪。
如果该跟踪无法帮助您确定问题,我建议使用 PHP 调试器,如 xdebug、Zend Debug 或 DBG 等(取决于您的 IDE 支持的调试器)。
在 load()
方法之前设置断点并单步执行代码应该会给你一个线索,为什么查询是空的。
【讨论】:
我有一个与 OP 非常相似的问题 - 我在自定义扩展控制器的 ./var/report/number 中收到相同的“查询为空”错误,但我粘贴了您的示例代码进行测试。 magento 根目录中的 php 并用我的查询替换它 - 它工作正常。有什么想法吗?以上是关于在 Magento 中加载日志访问者集合时收到“查询为空”错误的主要内容,如果未能解决你的问题,请参考以下文章
自定义模块的自定义布局不会在 Magento 1.9 中加载
如何在magento 2中加载外部CDN(seat.io)?
如何使用 php-url 路径在 Magento CMS 页面中加载图像背景?