我有一些 C++ 应用程序通过 Ubuntu 10.04 上的 unixODBC 访问我们的 MySQL 数据库。
在过去的几周里,每隔几周我都会在我们的错误日志中看到一次这个错误:
[unixODBC][MySQL][ODBC 3.51 驱动程序]在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:9
它源自我在 C++ 代码中使用的 ODBC 库,显然来自 ODBC 驱动程序。
除此之外,系统运行良好,每天处理数千个查询。有人能解释一下这可能表明什么,如何诊断,下一步该检查什么吗?
有人知道这个错误代码到底从何而来,以及我如何查找“9”的含义吗?
编辑:我还要添加这是一个本地服务器,即 MySQL 服务器与 C++ 代码在同一台机器上运行。
答案1
意思是“坏文件号”:http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html
基本上,当驱动程序尝试与套接字通信时,套接字无效。通常这是一个网络问题,但我只见过这种情况每次都会发生,而不是偶尔发生。
如果您能够以某种方式重现此问题,它就会对原因有所解释,但由于您的应用程序正在运行,因此很难追踪。
答案2
您的环境是否已更新?您可以复制它并确认错误吗?
能否搭建一个Ubuntu 12.04环境,并重现该错误?
如果这两个问题的答案都是“是”,请考虑在 Launchpad 上或直接向 UnixODBC 项目提交错误。