Подтвердить что ты не робот

Ошибка MySQL: 2013, "Потерянное соединение с сервером MySQL при чтении исходного пакета связи", системная ошибка: 0 "

У меня возникла проблема с подключением к моей локальной базе данных MySQL с использованием библиотеки Python MySQLdb. script работает хорошо ранее, но иногда я получаю ошибку MySQL в заголовке. Кажется, что нет объяснений, когда возникает ошибка, а script всегда запускается с той же машины с теми же аргументами.

Сервер MySQL работает как служба в Windows XP с пакетом обновления 3 (SP3) с использованием порта 3306 (работает локально размещенный phpMyAdmin), а script запускается из гостевой операционной системы Ubuntu 10.04 в Oracle VM VirtualBox.

В настоящее время я работаю над этой проблемой, открывая командную строку и выполняя "net stop MySQL", а затем "net start MySQL". Это позволяет мне запускать script несколько раз, прежде чем в результате возникнет ошибка, которую я исправил, перезапустив службу MySQL.

Поскольку я все еще вношу изменения в script, бывают случаи, когда script вызывает исключение и не выходит изящно, хотя я поймаю исключение и закрою курсор и соединение.

Код для подключения к базе данных:

def __init__(self):
  try:
    print "Connecting to the MySQL database..."
    self.conn = MySQLdb.connect( host = "192.168.56.1",
                                 user = "guestos",
                                 passwd = "guestpw",
                                 db = "testdb")
    self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
    print "MySQL Connection OK"
  except MySQLdb.Error, e:
    print "MySQLdb error %d: %s" % (e.args[0],e.args[1])
    raise

Полная ошибка, возникающая при этом, следующая:

MySQLdb error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Traceback (most recent call last):
  File "search.py", line 45, in <module>
    dataHandler = DataHandler()
  File "/home/guestos_user/workspace/Search/src/data_handler.py", line 25, in __init__
    db = "testdb")
  File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")
4b9b3361

Ответ 1

sudo vi /etc/mysql/my.cnf

удалить

bind-address = 127.0.0.1

затем

sudo reboot now

Что это. Имейте в виду, что это сделает ваш сервер mysql менее безопасным, когда вы его обнажаете.

Ответ 2

Я видел, как это происходит, когда дочерние процессы пытаются использовать один и тот же идентификатор соединения mysql (solution = создавать новые подключения для каждого дочернего процесса). Я не уверен, что это также возможно при совместном использовании объектов соединения с несколькими потоками.

Однако это только одна из многих возможных причин. См. Ответ VVS в Ошибка MySQL 2013 для получения списка ресурсов для устранения неполадок.

Ответ 3

Есть ли у вас на сервере MySQL счетчик под названием [email protected]? У вас должна быть учетная запись для доступа к вашему серверу MySQL с YOURIPADDRESS!

Например: Ваш IP-адрес 192.168.56.2; то вы должны создать и учесть, если они не существуют для доступа.

mysql> create user [email protected] identified by 'guestpw';

Ответ 4

Проблема исправлена ​​для меня только путем перезагрузки моего mac. Хотя для этого может быть более конкретное решение.

Ответ 5

Я запускаю сервер Windows, и время от времени php-win.exe будет загружаться и оставаться в списке процессов в диспетчере задач Windows.

Если вы знаете, что файл хоста верен, то запустите процесс php-win.exe и перезапустите iis iisreset

Если вы работаете с окнами, ваша проблема должна быть решена.

Ответ 6

Не могли бы вы изменить bind-address = localhost и перезапустить сервер MySQL? Похоже, эта проблема связана с вашей: http://forums.mysql.com/read.php?152,355740,355742#msg-355742

Также это -

Если MySQL-порт ошибочный, ошибка MySQL-клиента 2013 соединение... ". Обратите внимание, что эта ошибка также возникает, если переадресация портов отключен в конфигурации SSH (параметр конфигурации 'AllowTcpForwarding' установлено в 'sshd_config' в 'no'). Это (здесь) просто говорит, что нет связи с SSH на MySQL для некоторая причина. Но API-интерфейс mySQL" думает ", что есть один соединение, и именно поэтому сказано" Потерянное соединение... ", а не" Не могу подключиться... ". Была одна успешная связь - но не с сервер MySQL - только для демона SSH! Но API-интерфейс клиента MySQL не предназначен для" видеть" разницу!

Обратитесь this.

Ответ 7

У меня была точно такая же ошибка mysql (ERROR 2013 (HY000): Потерянное соединение с сервером MySQL при "считывании исходного пакета связи", системная ошибка: 0 =) и разрешили его, добавив новую строку в/etc/hosts.deny.

Ответ 8

Возможность: ваша база данных повреждена.

Я столкнулся с этой ситуацией, когда я запускал оператор UPDATE в определенной строке конкретной таблицы. (В частности, я редактировал элемент на сайте администратора Django.) В большинстве случаев база данных работала нормально.

Я, наконец, решил проблему, выполнив:

OPTIMIZE TABLE `your_table`

После этого все было в порядке, потеря связи не была.

Вывод:

Проблема "Lost connection to MySQL server at 'reading initial communication packet'", иногда "Can't connect to MySQL server on '127.0.0.1'", может быть решена путем выполнения полной оптимизации базы данных, если база данных повреждена. Для получения дополнительной информации прочитайте это.

Ответ 9

Я получил аналогичную ошибку при попытке подключиться к моему серверу MySQL удаленно через пользователя с достаточными разрешениями.

После редактирования файла /etc/mysql/my.cnf для включения

[mysqld]
bind-address=xx.xx.xxx.xxx

где xx.xx.xxx.xxx - мой локальный IP-адрес, я начал испытывать ту же ошибку, что и вы. Оттуда я нашел ответ на этот вопрос (ответил Coffee Converter), который работал у меня, и его можно найти здесь: Потерянное соединение с сервером MySQL при чтении исходного пакета связи, системная ошибка: 0 на машине Windows

Все, что я сделал, чтобы исправить проблему для себя, - это изменить /etc/hosts.allow, чтобы включить

mysqld: ALL: allow

Прекрасно работает! Надеюсь, это помогло:)

Ответ 10

перезагрузите компьютер. у меня работает

Ответ 11

Этот отчет об ошибках может вас заинтересовать. Не знаю, поможет ли это вам, но некоторые из них смогли решить это, используя имя сервера, а не ip-адрес в свойствах соединения.