MySQL Workbench: Jak utrzymać połączenie przy życiu

160

Kod błędu: 2013. Utracono połączenie z serwerem MySQL podczas zapytania

Używam MySQL Workbench. Ponadto uruchamiam partię wstawek, łącznie około 1000 wierszy (np. INSERT INTO mytable SELECT * FROM mysource1; INSERT INTO mytable SELECT * FROM mysource2;...mysource3...mysource4Pomnożone 1000 razy) Każda partia zajmuje znaczną ilość czasu, niektóre z nich ponad 600 sekund.

Jak mogę skonfigurować Środowisko pracy, aby kontynuować pracę w nocy, bez zatrzymywania i bez utraty połączenia?

Omar
źródło

Odpowiedzi:

343

Z niedostępnego obecnie archiwum internetowego:

Idź do Edycja -> Preferencje -> Edytor SQL i ustaw wyższą wartość tego parametru: Limit czasu odczytu połączenia DBMS (w sekundach). Na przykład: 86400.

Zamknij i ponownie otwórz MySQL Workbench. Zabij poprzednie zapytanie, które prawdopodobnie jest uruchomione, i uruchom je ponownie.

Ignacio
źródło
5
We wszystkich wersjach MySQL Workbench poza 6.0.x w systemie Mac OS jest błąd: stackoverflow.com/a/37890150/1014813
lepix
6
To zadziałało dla mnie, ale musiałem ponownie uruchomić edytor, aby zaczął działać.
cucu8
@lepix Czy ten błąd został naprawiony?
posfan12
2
Aby to odniosło skutek po zmianie wartości, konieczne jest ponowne uruchomienie edytora.
philip oghenerobo balogun
46

Jeśli używasz połączenia typu „Standard TCP / IP przez SSH”, w sekcji „Preferencje” -> „Inne” znajduje się pole „SSH KeepAlive”. Znalezienie go zajęło mi trochę czasu :(

Ljubitel
źródło
Dlaczego powtarzasz odpowiedź?
Jan Doggen
19
@JanDoggen Nie widzę żadnej innej odpowiedzi, która wskazuje, gdzie w MySQL Workbench można zmienić "SSH KeepAlive", które domyślnie jest 0 => wyłączone. Widzę tylko odpowiedź sugerującą zmianę ustawień ssh serwera ...
Ljubitel
Dziękujemy za zwrócenie uwagi na to, ponieważ to ustawienie zastępuje pliki konfiguracyjne klienta ~ / .ssh / config i / etc / ssh / ssh_config. Jest to absolutna konieczność w przypadku mobilnej łączności szerokopasmowej.
Rodney,
Czy mógłbyś dodać przykład wartości do wykorzystania w swojej odpowiedzi? Czy polecasz coś takiego jak 1800sekundy?
AL
1
@AL to zależy od twojego kontekstu. W moim przypadku połączenie SSH wygasało za 3 minuty (180 sekund), więc ustawiłem SSH KeepAlive na 30 sekund.
Ljubitel
15

W wersji 5.2.47 (przynajmniej na Mac) przejdź do lokalizacji preferencji: MySQLWorkbench-> Preferencje-> Edytor SQL

Wtedy zobaczysz oba:

Interwał utrzymywania aktywności połączenia DBMS (w sekundach): Limit czasu odczytu połączenia DBMS (w sekundach):

W tym drugim przypadku będziesz chciał zwiększyć limit z 600 do czegoś nieco więcej.

jidulberger
źródło
Ustawiłem limit czasu odczytu mojego połączenia DBMS na 86400 sekund, po około 7200 sekundach wykonywania jakiegoś zapytania nadal pojawia się błąd 2013. Czy ktoś coś o tym wie?
IndexOutOfDevelopersException
12

W moim przypadku po próbie ustawienia limitu czasu SSH w linii poleceń oraz w ustawieniach serwera lokalnego. Rozwiązanie @Ljubitel rozwiązało problem ode mnie.

Należy zauważyć, że w programie Workbench 6.2 ustawienie jest teraz zaawansowane

wprowadź opis obrazu tutaj

Abelgo
źródło
2
W wersji 6.3 Zaawansowany został przemianowany na Inne.
Richard
2

Jeśli używasz typu połączenia typu „Standard TCP / IP przez SSH”, może to być serwer ssh, który ciągle przekracza limit czasu. W takim przypadku będziesz musiał edytować ustawienia związane z TCPKeepAlive w / etc / ssh / sshd_config na swoim serwerze .

Tuncay Göncüoğlu
źródło
2

Otrzymałem ten błąd 2013 i żadna z powyższych zmian preferencji nie zrobiła nic, aby rozwiązać problem. Zrestartowałem usługę mysql i problem zniknął.

Neal Garrett
źródło
2

OK - więc ten problem doprowadza mnie do szału - wersja 6.3.6 na Ubuntu Linux. Żadne z powyższych rozwiązań nie zadziałało. Łączenie się z serwerem localhost mysql wcześniej zawsze działało dobrze. Łączenie się ze zdalnym serwerem zawsze przekraczało limit czasu - po około 60 sekundach, czasami po krótszym, czasami dłuższym czasie.

To, co w końcu zadziałało, to aktualizacja Workbencha do wersji 6.3.9 - koniec z porzucanymi połączeniami.

Chris Dav
źródło
1

Miałem podobny problem, gdy CREATE FULLTEXTprzekroczyłem limit czasu po 30 sekundach:

błąd

Ustawienie limitu czasu odczytu połączenia DBMS na 0 w menu Edycja -> Preferencje -> Edytor SQL rozwiązało problem:

naprawić bład

Ponadto nie musiałem ponownie uruchamiać środowiska roboczego mysql, aby to zadziałało.

kimbaudi
źródło
0

w mysql-workbech 5.7 edit-> preference-> SSH -> SSH Connect timeout (dla połączenia SSH DB) wprowadź opis obrazu tutaj

junior_software
źródło