Ich verwende MySQL und definiere eine gespeicherte Prozedur wie folgt:
%Vor%Wenn ich versuche, diese Prozedur auszuführen, erhalte ich folgende Fehlermeldung:
%Vor%Was bedeutet das und was mache ich falsch?
Von Handbuch
C.5.2.14. Befehle, die nicht synchron sind
Wenn SieCommands out of sync; you can't run this command now
in Ihrem Client-Code erhalten, rufen Sie den Client an funktioniert in der falschen Reihenfolge.Dies kann zum Beispiel passieren, wenn Sie
mysql_use_result()
und verwenden Versuchen Sie, eine neue Abfrage auszuführen, bevor Siemysql_free_result()
aufgerufen haben. Es kann auch vorkommen, wenn Sie versuchen, zwei Abfragen auszuführen, die Daten zurückgeben ohnemysql_use_result()
odermysql_store_result()
dazwischen aufzurufen.
Dieser Beitrag (aus hier )
Ich habe dieses Problem gelöst. Ich benutze MySQL-Fron statt MySQL Query Browser. Und alles funktioniert gut.
lässt mich glauben, dass es sich nicht um ein Server- oder Datenbankproblem handelt, sondern um ein Problem in dem von Ihnen verwendeten Tool.
Ich konnte diesen Fehler mit MySQL und phpmyadmin reproduzieren:
%Vor%Auf dieser Version von MySQL:
%Vor%Mit dem folgenden SQL durch das phpmyadmin Abfragefenster laufen:
%Vor%Ich konnte den Fehler nicht über das mysql-Terminal erhalten, also denke ich, dass es ein Fehler mit phpmyadmin ist.
Es funktioniert gut auf dem Terminal:
%Vor%Ich denke, der Bug hat etwas damit zu tun, die Midiabfrage der Trennzeichen in phpmyadmin zu ändern.
Workaround: Verlangsamen Sie ihren Cowboy und führen Sie Ihre SQL-Anweisungen nacheinander aus, wenn Sie phpmyadmin verwenden. phpmyadmin ist "single task bob", er kann nur einen Job machen.
Wenn Sie die gespeicherte Prozedur erstellt haben, haben Sie sie in der Datenbank mydatabase
gespeichert, um die Prozedur aufzurufen. Geh zu deiner lokalen DB und:
Dabei ist sp_test()
der Name Ihrer Prozedur.
Sie haben vergessen, das Schlüsselwort 'Begin' zu verwenden, und während der Kompilierung ist MySQL verwirrt, das sollte funktionieren:
%Vor%Ich habe dieses Problem auch mit einer C-API gefunden.
Ich fand die Lösung mit dem letzten Beispiel, das von Begrenzern spricht.
%Vor%Mein Code führt eine gespeicherte Prozedur aus und testet dann die Rückgabe. Ich benutze korrekt die mysql_free_result ().
Da ich in der Prozedur keine Auswahlklausel "in" hinzugefügt habe, ist dieser Fehler aufgetreten.
Das letzte Beispiel oben ist in demselben Fall.
Ich habe die Auswahl gelöscht und da es in Ordnung ist.
Alex
Ich habe gerade den gleichen Fehler von phpMYadmin bekommen, als ich eine Benutzerfunktion aufgerufen habe, an der ich arbeite.
mysql Konsole sagt jedoch:
%Vor%... was absolut korrekt ist, wurde in der Feldliste falsch geschrieben, daher bezog sich eine Anweisung auf eine undefinierte Variable.
Ich würde schließen müssen, dass
%Vor%von phpMYadmin ist ein ziemlich unspezifischer Fehler, der in vielen Fällen, wenn nicht in den meisten Fällen, nur das eigentliche Problem verdeckt, und man sollte nicht zu viel Zeit darauf verwenden, einen Sinn daraus zu machen.
Sie haben offensichtlich dieses Problem, weil beide Anweisungen gleichzeitig ausgeführt werden. Die einzige Problemumgehung, die ich gefunden habe, ist, die Verbindung nach dem SP zu schließen und die andere Anweisung auf einer neuen auszuführen. Lesen Sie darüber hier .
Tags und Links mysql stored-procedures