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?
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.
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]
.
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
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;
Es gibt drei wahrscheinliche Ursachen für diese Fehlermeldung
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;
Sie sollten die Eigenschaften 'interactive_timeout' und 'wait_timeout' in der mysql-Konfigurationsdatei auf die gewünschten Werte setzen.
Danke! Es hat geklappt ... Aber mit den mysqldb-Updates wurde das configure:
max_allowed_packet
net_write_timeout
net_read_timeout
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
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.
Ändern Sie die "Zeitüberschreitung beim Lesen" in Bearbeiten-> Voreinstellungen-> SQL-Editor-> MySQL-Sitzung
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.
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:
--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--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
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.
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.
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.
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.
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.
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?
Gehen Sie zu Workbench Bearbeiten → Voreinstellungen → SQL-Editor → Zeitüberschreitung beim Auslesen von DBMS-Verbindungen: Bis zu 3000 . Der Fehler ist nicht mehr aufgetreten.
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.
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
Prüfen Sie zuerst, ob die Indizes vorhanden sind.
SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
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.
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!