Wenn die Verbindung zwischen dem mysql-Client und dem Server während des Versands einer Abfrage abbricht, dann versucht der Client, die Verbindung sofort und automatisch wiederherzustellen, und sendet die Abfrage dann erneut. Ihre vorherige Verbindung ist aber auch dann, wenn mysql die Neuverbindung gelingt, definitiv beendet, d. h., alle vorherigen Sitzungsobjekte und Einstellungen sind verloren: Temporärtabellen, Autocommit-Modus und benutzerdefinierte und Sitzungsvariablen. Außerdem wird für alle aktuellen Transaktionen ein Rollback durchgeführt. Dieses Verhalten kann für Sie gefährlich sein. Beachten Sie das folgende Beispiel, in dem der Server heruntergefahren und neu gestartet wurde, ohne dass Sie davon erfahren haben:
mysql>SET @a=1;
Query OK, 0 rows affected (0.05 sec) mysql>INSERT INTO t VALUES(@a);
ERROR 2006: MySQL server has gone away No connection. Trying to reconnect... Connection id: 1 Current database: test Query OK, 1 row affected (1.30 sec) mysql>SELECT * FROM t;
+------+ | a | +------+ | NULL | +------+ 1 row in set (0.05 sec)
Die Benutzervariable @a
ist mit der
Verbindung verloren gegangen und nach der Neuverbindung
undefiniert. Wenn wichtig ist, dass mysql
in dem Fall, dass die Verbindung abreißt, mit einem Fehler
beendet wird, dann können Sie den
mysql-Client mit der Option
--skip-reconnect
starten.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.