Pakete außerhalb der Reihenfolge Fehler beim Aufruf von MySQL stored proc

Bin ich versucht, rufen Sie eine gespeicherte Prozedur mit PDO, aber erhalte die folgende Fehlermeldung, wenn Sie versuchen zu tun, ein fetch auf die Ergebnisse.

Warnung: Pakete außerhalb der Reihenfolge. Voraussichtlich zum 1 erhielt 16. Paket size=163

Meine gespeicherte Prozedur verwendet zwei Cursor, die ich in der Nähe, vor der Auswahl aus der temporären Tabelle. Ich bin zu Ahnen, das könnte das problem sein, da kann ich rufen Sie meine SP direkt in MySQL und kann die Ergebnisse sehen. Auch ich hatte nie ein problem mit dieser SP bei der Verwendung der php_mysql Erweiterung vor der Migration zu php_pdo_mysql.dll.
Ich bin auch in der Lage, meinen andere, einfachere gespeicherte Prozeduren mit INPUT-Parameter in PHP mit PDO und können die Ergebnisse abrufen, ohne irgendwelche Fehler.

Hier ist der code, der den Fehler zurück:

$db = new PDO('mysql:host='.__DB_HOST__.';dbname='.__DB_NAME__.';charset=utf8', __DB_USER__, __DB_PASS__);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

/* DOES NOT WORK */
$queryResult = $db->prepare("CALL GetResults(:siteId,null)");
$siteId = 19;
$queryResult->bindValue(':siteId', $siteId, PDO::PARAM_INT);
$queryResult->execute();
$result = $queryResult->fetchAll(PDO::FETCH_ASSOC); //returns packets out of order warning
print_r($result);

Habe ich diesen code in einen Try/Catch-block und wird keine exception geworfen. In der Tat, PHP zeigt dies als eine Warnung im browser.

Meine Gespeicherten Prozedur-Signatur sieht wie folgt aus:

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `GetResults`(IN siteIdParam INT(11), IN siteSearchText VARCHAR(45))

Ich bin mir auch nicht sicher, ob das problem mit der Weitergabe null als einer der params. Manchmal ist der erste parameter übergibt null, manchmal ist es das 2te. Aber egal es funktioniert immer direkt auf den MySQL-server.

Versuchte ich bindParam und bindValue, die gleiche Ergebnisse. Ich kann auch per post mein SP aber es wäre des guten zuviel.

Gibt es eine Möglichkeit, schalten Sie zusätzliche Protokollierung von der PDO-Erweiterung?

Irgendwelche Ideen oder Vorschläge? Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen.

HINWEIS: ich bin mit PHP v5.5.4 und MySQL v5.6.14.

Dies kann hilfreich sein: bugs.mysql.com/bug.php?id=68359
Ich hatte das gesehen, und habe versucht, verschiedene Kombinationen, aber ich bin mir nicht sicher, wie konvertiert man die mysqli-gepostet Lösung PDO...

InformationsquelleAutor http203 | 2013-10-15

Schreibe einen Kommentar