MySQL Query wird ausgeführt, löst jedoch eine Ausnahme aus

8

Mein Code:

%Vor%

Erzeugt den Benutzer22, löst aber auch eine (leere?) Ausnahme aus:

%Vor%

Natürlich führt das erneute Ausführen zu einer korrekten Ausnahme:

%Vor%

Das Kommentieren der executeQuery -Zeile führt zu keinen Ausnahmen (leere Ausgabe) Ist das üblich? Sollte ich das einfach ignorieren?

    
lalli 01.08.2011, 19:30
quelle

3 Antworten

18

Sie verwenden executeQuery , das das sql :: ResultSet-Objekt zurückgeben soll, und Sie fragen "CREATE USER" , was "true" zurückgibt oder falsch.

Für solche Fälle gibt es eine Methode execute . Also ...

%Vor%

wird keinen Fehler auslösen.

Ja, ich weiß, dass der Beitrag 2 Jahre alt ist, aber wenn jemand in Zukunft auf dasselbe Problem stoßen würde, könnte das für sie nützlich sein.

    
Soul_man 05.03.2013, 05:22
quelle
0

Aus der MySQL-Referenz - 13.6.7.2 DECLARE ... HANDLER Syntax :

  

Ein SQLSTATE-Wert (ein 5-stelliges Zeichenfolgenliteral) oder ein MySQL-Fehlercode (eine Zahl). Sie sollten den SQLSTATE-Wert '00000' oder den MySQL-Fehlercode 0 nicht verwenden, da diese den Erfolg und nicht eine Fehlerbedingung anzeigen. Eine Liste der SQLSTATE-Werte und MySQL-Fehlercodes finden Sie in Abschnitt C.3, "Serverfehlercodes und -meldungen".

    
Jesse 01.08.2011 19:35
quelle
0

Ich hatte kürzlich die Situation, dass eine Abfrage zu einer Exception mit Fehlercode 0 und sql status 1000 führte. Es ist wahrscheinlich nicht das Problem, das Sie hatten, aber für den Fall, dass jemand über diesen Thread stolpert, während er versucht, etwas Ähnliches herauszufinden, ist das gelöst es für mich:

Der Grund, warum ich diesen Fehler immer erhielt, war, dass die vom Java-Connector geschriebenen Protokolldateien (das clientseitige Protokoll für langsame Abfragen und das Leistungsmetrikprotokoll) vom falschen Benutzer erstellt wurden, so dass mein Prozess nicht zugelassen wurde überschreiben sie. Um fair zu sein, führte dies zu einer Warnung während des Starts, aber ich erwartete keine Ausnahme jedes Mal, wenn der Connector versuchte, in das Protokoll zu schreiben.

Dies wäre also ein Beispiel, in dem eine Ausnahme mit dem Fehlercode 0 tatsächlich als eine Warnung angesehen werden kann, die ignoriert werden könnte (wie Jesses Antwort aus der MySQL-Referenz).

Übrigens: Statuscode 0 bedeutet erfolgreicher Abschluss (genau wie MySql Fehlercode 0) und Statuscode 1000 bedeutet "Warnung" ( Ссылка ).

    
Lars Kokemohr 20.01.2016 13:04
quelle

Tags und Links