Ошибка CDbCommand :: fetchColumn (): SQLSTATE [HY000]: общая ошибка: 2014 Не удается выполнить запросы, когда активны другие небуферизованные запросы - PullRequest
2 голосов
/ 26 января 2012

Я хочу иметь возможность получить некоторый вывод из хранимой процедуры mysql в параметрах OUT, но для случая, когда хранимая процедура также возвращает набор результатов через оператор выбора, как показано ниже.

DELIMITER $$

DROP PROCEDURE IF EXISTS `RD`.`sp`$$

CREATE DEFINER=`root`@`%` PROCEDURE `sp`(in b int, out a int)
BEGIN
select 664656 into a;

select 5;
END$$

DELIMITER ;

При запуске в консоли ниже упомянутой команды одна за другой

call sp(5,@a)
select @a

мы получим результат 5 => 5 @a => 664656

Однако, когда я пытаюсьчтобы запустить тот же код из PHP получить ошибку ниже

[error] [system.db.CDbCommand] CDbCommand::fetchColumn() failed: 
SQLSTATE[HY000]: 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 @a as result;.

Ниже, пожалуйста, найдите мой PHP-код.

$connection = Yii::app ()->db;
    $b=7;
    $command = $connection->createCommand ( "CALL sp(:b,@a)" );
    $command->bindParam ( ":b", $b, PDO::PARAM_INT );
    $command->execute();

    $command->getPdoStatement()->fetchAll();

    $command->getPdoStatement()->closeCursor();

    $valueOut = $connection->createCommand ( "select @a as result;" )->queryScalar ();


    echo $valueOut;

Любые идеи, как исправить ???

PHPВерсия 5.3.1

Yii версия 1.1.9

Mysql Версия 5.1.41-3ubuntu12.10

1 Ответ

1 голос
/ 07 февраля 2012

В конце я обнаружил проблемы, и это было с версией php. https://bugs.php.net/bug.php?id=39858 Я обновил версию до PHP версии 5.3.2, и теперь она работает нормально. пожалуйста, примите во внимание, что он не работает под Windows для той же версии и работает только под Linux. (По крайней мере, для меня).

...