Назад | Перейти на главную страницу

Диагностика спорадической ошибки MySQL

У меня есть несколько приложений C ++, которые обращаются к нашей базе данных MySQL через unixODBC в Ubuntu 10.04.

Раз в несколько недель в течение последних нескольких недель в наших журналах ошибок появлялась эта ошибка:

[unixODBC] [MySQL] [Драйвер ODBC 3.51] Потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 9

Он происходит из библиотеки ODBC, которую я использую в своем коде на C ++, и, по-видимому, исходит из драйвера ODBC.

В остальном система работает нормально, обрабатывая тысячи запросов в день. Может ли кто-нибудь пролить свет на то, что это может означать, как диагностировать, что проверять дальше?

Кто-нибудь знает, откуда именно происходит этот код ошибки и как я могу узнать, что означает «9»?

Изменить: я также добавлю, что это локальный сервер, то есть сервер MySQL работает на том же компьютере, что и код C ++.

  1. Ваша среда обновлена? Можете ли вы повторить это и подтвердить ошибку?

  2. Сможете ли вы создать среду Ubuntu 12.04 и воспроизвести ошибку?

Если ответ на оба из этих вопросов - «да», рассмотрите возможность регистрации ошибки либо на Launchpad, либо напрямую в проекте UnixODBC.

Это означает "неправильный номер файла": http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html

По сути, сокет был недействительным, когда драйвер пытался с ним связаться. Обычно это проблема сети, но я видел только случаи, когда это происходило каждый раз, а не спорадически.

Если вам удастся каким-то образом воспроизвести это, это прольет свет на причину, но, поскольку ваше приложение работает, его будет сложно отследить.