我已经看到很多堆栈溢出问题,一些博客尝试了解决方法,但没有帮助 - 因此重新发布了更详细的问题。
我看到了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
提前致谢..
答案 0 :(得分:2)
找到理由 - 回答我的问题:
当我以前从我的应用程序运行MySQL时 - 它是在系统用户权限下运行的 - 因此用于选择" C:\ WINDOWS \ TEMP "作为一个临时目录 - 这个目录搞砸了 - 有很多不必要的文件......在处理这个目录下的文件时,MySQL被卡住......
但是当我在我的管理员帐户下手动运行时,它正在使用他的临时目录... C:\ Users \ USER_NAME \ AppData \ Local \ Temp ,一切都像魔法一样......
要永久修复此问题,我通过MySQL 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意味着没有超时,但显然有点短暂,我试图通过慢速互联网连接连接到远程数据库。许多其他问题和答案都与在同一台机器内连接有关,所以这个错误报告不多。