Как можно выполнять запросы, пока другие небуферизованные запросы активны в yii?

#sql #yii

#sql #yii

Вопрос:

У меня есть некоторая команда sql в контроллере yii

моя команда запроса верна, но когда я хочу ее выполнить, у меня возникает исключение CDbException.
Я оставил свой код здесь, я не знаю, как его решить.
Я думаю, что когда я выполняю какую-либо команду запроса, я получаю ошибку, потому что, когда я выполняю команду запроса, у меня нет никаких проблем.

 $queryb = "DROP TABLE if exists poli;";
        $queryb .= "CREATE VIEW poli AS
                SELECT `user_Id` , count( `psh_profile_information_services`.id ) as internetcount
    FROM `psh_profile_information`
    INNER JOIN `psh_profile_information_services` ON `psh_profile_information`.`id` = `psh_profile_information_services`.`profileInformationId`
    WHERE `serviceId` =1
    GROUP BY `psh_profile_information`.`user_Id` ";

       $command= $connection->createCommand($queryb);
       $command->execute(); 

        $sql = "SELECT  `profile`.`scope_id` , SUM( internetcount ) 
FROM  `psh_profiles` AS profile
INNER JOIN  `poli` ON  `profile`.`user_id` =  `poli`.`user_Id` 
GROUP BY  `profile`.`scope_id` ";

        $internetcountOfRows = Yii::app()->db->createCommand($sql)->queryAll();
  

этот код может создать «view pori», но не может выполнить запрос «$ sql».

CDbException:

 General error: 2014 Cannot execute queries while other unbuffered queries are active.
Consider using PDOStatement::fetchAll().
Alternatively, if your code is only ever going to run against mysql,
you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.. The SQL statement executed was: SELECT `profile`.`scope_id` , SUM( internetcount )
FROM `psh_profiles` AS profile
INNER JOIN `poli` ON `profile`.`user_id` = `poli`.`user_Id`
GROUP BY `profile`.`scope_id` 
  

Ответ №1:

Попробуйте добавить это перед выполнением:

 $command->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
  

Комментарии:

1. я пишу вашу команду перед $command-> execute(); у меня ошибка: CDbCommand и его поведение не имеют метода или замыкания с именем «setAttribute».

2. попробуйте: Yii::app()->db->->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);