Как исправить «Потерянное соединение с сервером MySQL во время запроса» с помощью pymysql - PullRequest
1 голос
/ 25 мая 2019

У меня проблемы с подключением через SSH с помощью pymysql к удаленной базе данных MySQL, которая находится на сервере Ubuntu 18.04 LTS. Однако подключение к одному и тому же серверу и базе данных с использованием MySQL Workbench через SSH не создает проблем - независимо от запроса.

Я пытался поднять wait_timeout и interactive_timeout на сервер MySQL (до 8 часов), но ничего. Следующий код работает только один раз через некоторое время:

# test.py

import pymysql
import pymysql.cursors
from sshtunnel import SSHTunnelForwarder
SSHTunnelForwarder.SSH_TIMEOUT = 200.0
SSHTunnelForwarder.TUNNEL_TIMEOUT = 200.0

with SSHTunnelForwarder(
    ('myhostname.net', 22),
    ssh_username='some_user',
    ssh_password='some_password',
    remote_bind_address=('127.0.0.1', 3306)
) as tunnel:
    conn = pymysql.connect(host='127.0.0.1', 
        port=tunnel.local_bind_port, 
        user='admin', 
        password='password', 
        db='db'
    )

Это вывод из-за сбоя вышеуказанного кода (который составляет около 95% времени):

Traceback (most recent call last):
  File "test.py", line 19, in <module>
    db='db'
  File "/home/alex/Desktop/the_bbc/application/venv/lib/python3.6/site-packages/pymysql/__init__.py", line 94, in Connect
    return Connection(*args, **kwargs)
  File "/home/alex/Desktop/the_bbc/application/venv/lib/python3.6/site-packages/pymysql/connections.py", line 325, in __init__
    self.connect()
  File "/home/alex/Desktop/the_bbc/application/venv/lib/python3.6/site-packages/pymysql/connections.py", line 598, in connect
    self._get_server_information()
  File "/home/alex/Desktop/the_bbc/application/venv/lib/python3.6/site-packages/pymysql/connections.py", line 975, in _get_server_information
    packet = self._read_packet()
  File "/home/alex/Desktop/the_bbc/application/venv/lib/python3.6/site-packages/pymysql/connections.py", line 657, in _read_packet
    packet_header = self._read_bytes(4)
  File "/home/alex/Desktop/the_bbc/application/venv/lib/python3.6/site-packages/pymysql/connections.py", line 707, in _read_bytes
    CR.CR_SERVER_LOST, "Lost connection to MySQL server during query")

Что-нибудь, что я должен исследовать / попытаться заставить вышеупомянутый код работать? Любой совет очень ценится!

...