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?

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.


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 :(


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.


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


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 .


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ął.


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.


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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.