2015-06-02 5 views
1

я получаю следующее сообщение об ошибке при вызове 2-ой хранимой процедуры с помощью PHP PDO:MySQL PDO общая ошибка 2014 при вызове нескольких хранимых процедур

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.

Обычно эта ошибка возникает, когда вы не использовали fetchAll(), чтобы получить все данные обратно из MySQL, прежде чем запрашивать больше данных. Однако в этом случае я использую fetchAll во всех вызовах хранимых процедур.

Возможны два обходных пути. Либо используйте $stmt->closeCursor() после каждого вызова хранимой процедуры, либо вместо этого замените хранимые процедуры запросами SELECT.

Есть ли что-то в отношении хранимых процедур, которые оставляют данные «необработанными»?

+0

Пожалуйста, разместите определения хранимой процедуры. Вы используете SELECT _multiple_ в одном из них, но только 'fetchAll()' из одного набора результатов, не используя ['nextRowset()'] (http://php.net/manual/en/pdostatement.nextrowset.php) например? –

ответ

-1

У меня была такая же проблема, я использовал PDO fetchAll, nextRowset();, затем closeCursor(); это решило мою проблему.

+2

Не могли бы вы написать более подробный ответ с объяснением insead о том, чтобы просто ввести один кодовый вкладыш. – bish

+0

Извините, это был мой первый пост. Больше информации можно найти на [nextRowset()] (http://php.net/manual/en/pdostatement.nextrowset.php). У меня была такая же проблема, я использовал PDO fetchAll, nextRowset() thnen closeCursor(), это решило мою проблему. – modez

+0

Измените свой ответ, а не объясните в разделе комментариев. –

Смежные вопросы