在等待初始通信数据包时失去与MySQL服务器的连接'

时间:2016-06-07 06:13:48

标签: python mysql windows

我已经看到很多堆栈溢出问题,一些博客尝试了解决方法,但没有帮助 - 因此重新发布了更详细的问题。

我看到了MySQL和Python应用程序的奇怪行为,详情如下:

1)我的应用程序与MySQL完美配合(在许多平台上试用和测试),但在这台特定的机器上它无法连接到MySQL。

应用程序的结构是:

   Windows service -> parent process -> Mysql(child process)

当应用程序尝试连接到MySQL时,会出现此错误:

ERROR 2013 , Lost connection to MySQL server at 'waiting for initial communication packet' - system error 0

我试过了:

- connect_timeout=300
- skip-name-resolve=0
- firewall is OFF
- use 17.0.0.1, localhost , IP of machine to connect to but it still fails with same error.

2)现在奇怪的是 -

如果我手动执行应用程序执行的所有步骤,它的工作完全正常,详情如下: a)使用具有管理员权限的相同命令(应用程序使用)启动MySQL

mysql --default-file = xxx --basedir =xxx

b)使用相同的凭据(-u root -P 6075 -h 127.0.0.1)和  它工作得非常好,我仔细检查了应用程序执行的所有步骤,手动步骤和应用程序代码之间没有区别。

AM我在这里错过了什么?有什么建议吗?

MySQL version : 5.5.35
Python : 2.7
Base OS : Windows 2012 R2 

提前致谢..

2 个答案:

答案 0 :(得分:2)

找到理由 - 回答我的问题:

当我以前从我的应用程序运行MySQL时 - 它是在系统用户权限下运行的 - 因此用于选择" C:\ WINDOWS \ TEMP "作为一个临时目录 - 这个目录搞砸了 - 有很多不必要的文件......在处理这个目录下的文件时,MySQL被卡住......

但是当我在我的管理员帐户下手动运行时,它正在使用他的临时目录... C:\ Users \ USER_NAME \ AppData \ Local \ Temp ,一切都像魔法一样......

要永久修复此问题,我通过My​​SQL conf文件更改了tmp目录,现在我的应用程序像Wind一样运行.... :)

[mysqld]
tmpdir = 'PATH_TO_THE_DIRECTORY'

答案 1 :(得分:0)

尝试设置SQL Server链接服务器时遇到同样的错误

Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "DBLINKED".
OLE DB provider "MSDASQL" for linked server "DBLINKED" returned message "[MySQL][ODBC 8.0(w) Driver]Lost connection to MySQL server at 'waiting for initial communication packet', system error: 10060". (Microsoft SQL Server, Error: 7303)

你在最初的问题中提到过 - 连接超时对我来说是个问题。

默认值为0 - 将其提高到300.我认为默认值为0意味着没有超时,但显然有点短暂,我试图通过慢速互联网连接连接到远程数据库。许多其他问题和答案都与在同一台机器内连接有关,所以这个错误报告不多。