У меня есть несколько приложений C ++, которые обращаются к нашей базе данных MySQL через unixODBC в Ubuntu 10.04.
Раз в несколько недель в течение последних нескольких недель в наших журналах ошибок появлялась эта ошибка:
[unixODBC] [MySQL] [Драйвер ODBC 3.51] Потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 9
Он происходит из библиотеки ODBC, которую я использую в своем коде на C ++, и, по-видимому, исходит из драйвера ODBC.
В остальном система работает нормально, обрабатывая тысячи запросов в день. Может ли кто-нибудь пролить свет на то, что это может означать, как диагностировать, что проверять дальше?
Кто-нибудь знает, откуда именно происходит этот код ошибки и как я могу узнать, что означает «9»?
Изменить: я также добавлю, что это локальный сервер, то есть сервер MySQL работает на том же компьютере, что и код C ++.
Ваша среда обновлена? Можете ли вы повторить это и подтвердить ошибку?
Сможете ли вы создать среду Ubuntu 12.04 и воспроизвести ошибку?
Если ответ на оба из этих вопросов - «да», рассмотрите возможность регистрации ошибки либо на Launchpad, либо напрямую в проекте UnixODBC.
Это означает "неправильный номер файла": http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html
По сути, сокет был недействительным, когда драйвер пытался с ним связаться. Обычно это проблема сети, но я видел только случаи, когда это происходило каждый раз, а не спорадически.
Если вам удастся каким-то образом воспроизвести это, это прольет свет на причину, но, поскольку ваше приложение работает, его будет сложно отследить.