在Yii上获取错误,例如SQLSTATE [HY000]:常规错误:2014在其他无缓冲的查询处于活动状态时无法执行查询

时间:2015-09-26 06:47:39

标签: php mysql yii pdo

我收到的确切错误如

  

SQLSTATE [HY000]:常规错误:2014无法执行查询   其他未缓冲的查询处于活动状态。考虑使用   PDOStatement对象::使用fetchall()。或者,如果您的代码只是永远   要对mysql运行,您可以通过设置启用查询缓冲   PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性。

     

>我在我的项目中使用Yii框架。   操作系统:Debian GNU / Linux 8 \ n \ l   Php:PHP 5.6.13-0 + deb8u1   Mysql:4.2.12deb2   数据库客户版:   libmysql - 5.5.44

我从DB获取数据并按照以下代码导出为csv:

ini_set('memory_limit', '-1');
$cmd = Yii::app()->db->createCommand("select su.name as ConsultantName , su.Surname as ConsultantSurname,su.RegistrationDate as RegistrationDate,su.CardNumber as ConsultantCardNumber,su.SequenceNumber as ConsultantSequenceNumber, 
s.Name as StoreName,s.StoreAddress1 as StoreAddress,s.LeegraCode,s.LeegraRegion as Region ,  n.Name as Network, sg.Name as SuperGroup,sg.CardNumber as SuperGroupCardnumber,sg.SequenceNumber as SuperGroupSequenceNumber, s.ID as AccelerateID,
manager.Name as StoreManagerName, manager.Surname as StoreManagerSurname, manager.CardNumber as ManagerCardNumber, manager.SequenceNumber as ManagerSequenceNumber,fun_total_claim_by_sustemuser(su.ID) as Total_number_of_claims_ever,fun_systemuser_register(su.ID) as Registered_AND_Activated_Yes_No
from systemuser su 
inner join store s on s.ID = su.StoreID
inner join network n on n.ID = su.NetworkID
left join (select man.* from systemuser man inner join store store on store.ID = man.StoreID and RoleID = 3 ) manager on manager.StoreID = s.ID
inner join supergroup sg on sg.ID = s.SuperGroupID
where su.RoleID = 1");

Yii::import('ext.ECSVExport');
$csv = new ECSVExport($cmd);
$content = $csv->toCSV();
$filename="StoreByUserByNetworkByManager.csv"  ;
Yii::app()->getRequest()->sendFile($filename, $content, "text/csv", false);
exit();

这个相同的代码正在我的本地系统上工作但不能在新服务器上工作,因为我已经提供了上述信息。 有人知道这个错误会出现什么问题吗?

1 个答案:

答案 0 :(得分:0)

尝试在createCmmand

之前添加它
Yii::app()->db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);