it-swarm.com.de

Fehlercode: 2013. Verbindung zum MySQL-Server während der Abfrage verloren

Ich habe den Fehlercode: 2013 erhalten. Verbindung zum MySQL-Server während AbfrageFehler verloren, als ich mit MySQL Workbench versuchte, einer Tabelle einen Index hinzuzufügen. Ich habe auch bemerkt, dass es immer dann erscheint, wenn ich lange Abfragen ausführte. 

Gibt es einen Weg, um den Timeout-Wert zu erhöhen?

178
user836026

Neue Versionen von MySQL WorkBench bieten eine Option zum Ändern bestimmter Timeouts.

Bei mir war es unter Bearbeiten → Voreinstellungen → SQL-Editor → DBMS-Verbindungsauslesezeit (in Sekunden): 600

Der Wert wurde auf 6000 geändert.

Auch ungeprüfte Begrenzungszeilen als Begrenzung, wenn ich den gesamten Datensatz durchsuchen möchte, wird ermüdend. 

342

Starten Sie den DB-Server mit der Befehlszeilenoption net_read_timeout/wait_timeout und einem geeigneten Wert (in Sekunden) - zum Beispiel: --net_read_timeout=100.

Als Referenz siehe hier und hier .

28
Yahia

Wenn Ihre Abfrage Blob-Daten enthält, können Sie dieses Problem beheben, indem Sie my.ini change wie in dieser Antwort vorgeschlagen anwenden.

[mysqld]
max_allowed_packet=16M

Dies ist standardmäßig 1M (der maximal zulässige Wert ist 1024M). Wenn der angegebene Wert kein Vielfaches von 1024 K ist, wird er automatisch auf das nächste Vielfache von 1024 K gerundet.

Während es sich bei dem referenzierten Thread um den MySQL-Fehler 2006 handelt, wird der max_allowed_packet von 1M auf 16M gesetzt. Did behebt den 2013-Fehler, der beim Ausführen einer langen Abfrage angezeigt wurde.

Für WAMP-Benutzer: Sie finden das Flag im Abschnitt [wampmysqld].

16
Harti

Fügen Sie Folgendes in die Datei/etc/mysql/cnf ein:

innodb_buffer_pool_size = 64M

beispiel:

key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
innodb_buffer_pool_size = 64M
14
MysqlMan
SET @@local.net_read_timeout=360;

Warnung: Die folgenden Funktionen funktionieren nicht, wenn Sie sie in einer Remote-Verbindung anwenden:

SET @@global.net_read_timeout=360;
10
user1313024

Es gibt drei wahrscheinliche Ursachen für diese Fehlermeldung

  1. Normalerweise weist dies auf Probleme mit der Netzwerkverbindung hin und Sie sollten den Zustand Ihres Netzwerks überprüfen, wenn dieser Fehler häufig auftritt
  2. Manchmal tritt das Formular „während der Abfrage“ auf, wenn Millionen von Zeilen als Teil einer oder mehrerer Abfragen gesendet werden.
  3. Seltener kann es vorkommen, wenn der Client die erste Verbindung zum Server versucht

Für mehr Details lesen Sie >>

Ursache 2: 

SET GLOBAL interactive_timeout=60;

von seiner Standardeinstellung von 30 Sekunden bis 60 Sekunden oder länger

Ursache 3:

SET GLOBAL connect_timeout=60;
9
Nanhe Kumar

Sie sollten die Eigenschaften 'interactive_timeout' und 'wait_timeout' in der mysql-Konfigurationsdatei auf die gewünschten Werte setzen.

8
Maksym Polshcha

Danke! Es hat geklappt ... Aber mit den mysqldb-Updates wurde das configure:

max_allowed_packet

net_write_timeout

net_read_timeout

mysql doc

8
user2286136

Führen Sie einfach ein MySQL-Upgrade durch, das die innoDB-Engine zusammen mit dem Wiederherstellen vieler für das ordnungsgemäße Funktionieren von MySQL erforderlichen Tabellen wie performance_schema, information_schema usw. neu erstellt.

Geben Sie den folgenden Befehl von Ihrer Shell aus:

Sudo mysql_upgrade -u root -p
7
Shoaib Khan

Ich weiß, dass es alt ist, aber auf Mac 

1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.
4
Aamir Mahmood

Ändern Sie die "Zeitüberschreitung beim Lesen" in Bearbeiten-> Voreinstellungen-> SQL-Editor-> MySQL-Sitzung

4
user6234739

Deaktivieren Sie die Begrenzungszeilen in Bearbeiten → Voreinstellungen → SQL-Abfragen 

weil Sie die Eigenschaften 'interactive_timeout' und 'wait_timeout' in der mysql-Konfigurationsdatei auf die gewünschten Werte setzen sollten.

3
user2586714

Wenn dieses Problem beim Wiederherstellen einer großen Dump-Datei auftritt und Sie das Problem ausschließen können, dass es etwas mit dem Netzwerk zu tun hat (z. B. Ausführung auf localhost), könnte meine Lösung hilfreich sein.

Mein mysqldump hatte mindestens eine INSERT, die für die Berechnung von mysql zu groß war. Sie können diese Variable anzeigen, indem Sie show variables like "net_buffer_length"; in Ihr mysql-cli ..__ eingeben. Sie haben drei Möglichkeiten:

  • net_buffer_length in mysql erhöhen -> dies würde einen Neustart des Servers erfordern
  • erstellen Sie einen Dump mit --skip-extended-insert, pro Einfügung wird eine Zeile verwendet -> obwohl diese Dumps viel besser lesbar sind, ist dies nicht für große Dumps> 1 GB geeignet, da sie sehr langsam sind
  • erstellen Sie einen Speicherauszug mit erweiterten Einfügungen (der Standardeinstellung), begrenzen Sie jedoch die net-buffer_length, z. mit --net-buffer_length NR_OF_BYTES wobei NR_OF_BYTES kleiner als der net_buffer_length des Servers ist -> Ich denke, dass dies die beste Lösung ist, obwohl langsamer kein Neustart des Servers erforderlich ist.

Ich habe den folgenden mysqldump-Befehl verwendet: mysqldump --skip-comments --set-charset --default-character-set=utf8 --single-transaction --net-buffer_length 4096 DBX > dumpfile 

3
Matt V

Wenn alle anderen Lösungen hier fehlschlagen, überprüfen Sie in Ihrem Syslog (/ var/log/syslog oder Ähnliches), ob der Server während der Abfrage über genügend Arbeitsspeicher verfügt.

Hatte dieses Problem, wenn innodb_buffer_pool_size zu nahe an den physischen Speicher gesetzt wurde, ohne dass eine Auslagerungsdatei konfiguriert wurde. MySQL empfiehlt für einen datenbankspezifischen Server die Einstellung innodb_buffer_pool_size auf maximal 80% des physischen Speichers , ich hatte es auf 90% gesetzt, der Kernel brach den MySQL-Prozess ab. Innodb_buffer_pool_size wurde auf rund 80% zurückgesetzt und das Problem behoben.

2
A_funs

Ich habe das gleiche Problem beim Laden einer .csv-Datei erhalten.

Mit dem folgenden Befehl kann ich dieses Problem umgehen.

mysql -u <user> -p -D <DB name> < file.sql

Hoffe das würde helfen.

2

Ich stand vor demselben Problem. Ich glaube, es passiert, wenn Sie Fremdschlüssel für größere Tabellen haben (was Zeit kostet).

Ich habe versucht, die Anweisung "create table" erneut ohne die Deklarationen für den Fremdschlüssel auszuführen. 

Nachdem ich die Tabelle erstellt hatte, fügte ich die Fremdschlüsseleinschränkungen mithilfe der ALTER TABLE-Abfrage hinzu.

Hoffe das hilft jemandem.

1
Nimeshka Srimal

Dies ist mir passiert, weil mein innodb_buffer_pool_size größer als die auf dem Server verfügbare RAM - Größe war. Aus diesem Grund wurden die Dinge unterbrochen und es wird dieser Fehler ausgegeben. Das Update besteht darin, my.cnf mit der korrekten Einstellung für innodb_buffer_pool_size zu aktualisieren.

1

Wenn Sie SQL Work Bench verwenden, können Sie die Indexierung verwenden, indem Sie einen Index zu Ihren Tabellen hinzufügen. Um einen Index hinzuzufügen, klicken Sie auf das Schraubenschlüssel-Symbol in der Tabelle. Daraufhin sollte das Setup für die Tabelle unten geöffnet werden Klicken Sie auf die Indexansicht, geben Sie einen Indexnamen ein und setzen Sie den Typ auf Index. Wählen Sie in den Indexspalten die primäre Spalte in Ihrer Tabelle aus.

Führen Sie den gleichen Schritt für andere Primärschlüssel in anderen Tabellen aus.

0
Matthew E

Ich bin auf dieses Problem gestoßen, als ich einen gespeicherten Prozess ausgeführt habe, der viele Zeilen in einer Tabelle in der Datenbank erstellt hat .. Ich konnte sehen, dass der Fehler kam, sobald die 30 Sekunden überschritten wurden.

Ich habe alle Vorschläge in den anderen Antworten ausprobiert. Ich bin sicher, dass einiges davon geholfen hat, aber was für mich wirklich funktionierte, war der Wechsel von Workbench zu SequelPro.

Ich vermute, es war eine clientseitige Verbindung, die ich in Workbench nicht erkennen konnte ... Vielleicht hilft dies auch jemand anderem?

0
RN.

Gehen Sie zu Workbench Bearbeiten → Voreinstellungen → SQL-Editor → Zeitüberschreitung beim Auslesen von DBMS-Verbindungen: Bis zu 3000 . Der Fehler ist nicht mehr aufgetreten.

0

Es stellte sich heraus, dass unsere Firewall-Regel meine Verbindung zu MySQL blockierte. Nachdem die Firewall-Richtlinie aufgehoben wurde, um die Verbindung zuzulassen, konnte ich das Schema erfolgreich importieren.

0
wuro

Ich hatte das gleiche Problem - aber für mich war die Lösung ein DB-Benutzer mit zu strengen Berechtigungen. Ich musste die Fähigkeit Execute für die Tabelle mysql zulassen. Nachdem ich das zugelassen hatte, hatte ich keine fallenden Verbindungen mehr

0
naabster

Prüfen Sie zuerst, ob die Indizes vorhanden sind.

SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
0

Gehe zu:

Bearbeiten -> Voreinstellungen -> SQL Editor

Dort sehen Sie drei Felder in der Gruppe "MySQL-Sitzung", in denen Sie nun die neuen Verbindungsintervalle (in Sekunden) einstellen können.

0
Max

Hier scheint eine Antwort für diejenigen zu fehlen, die SSH verwenden, um eine Verbindung zu ihrer MySQL-Datenbank herzustellen. Sie müssen zwei Stellen überprüfen, die nicht 1 sind, wie in anderen Antworten vorgeschlagen:

Workbench Bearbeiten → Einstellungen → SQL Editor → DBMS

Workbench Bearbeiten → Einstellungen → SSH → Timeouts

Meine Standard-SSH-Zeitüberschreitungen waren sehr niedrig eingestellt und verursachten einige (aber anscheinend nicht alle) meiner Zeitüberschreitungsprobleme. Vergessen Sie anschließend nicht, MySQL Workbench neu zu starten!

Als letztes kann es sich lohnen, Ihren DB-Administrator zu kontaktieren und ihn zu bitten, die Eigenschaften wait_timeout und interactive_timeout in mysql selbst über my.conf + mysql restart zu erhöhen oder ein globales Set durchzuführen, wenn ein Neustart von mysql nicht möglich ist.

Hoffe das hilft!

0
ThatOneGuy