2011-09-30 58 views
3

我们有一个VB.Net应用程序,它可以在我们的测试中在不同的Windows XP SP3机器中正常工作。但有一台机器显示此错误:VB.Net应用程序无法连接到本地MySQL,但我可以连接命令

Unable to connect to any of the specified MySQL hosts

使用mysql命令,我们可以成功连接到数据库。我们已经检查过可能阻塞连接的任何其他应用程序或防火墙,但看起来很好。我们还重新安装了系统(在安装过程中没有错误),但MySQL错误消息没有改变。

系统设置与其他电脑完全相同。我们在连接字符串中使用“localhost”作为服务器。 “主机”文件有其默认值(在那里没有什么奇怪的)。

有没有人有类似的经验,并可以指向正确的方向?

+0

你有一个集中的(只有一个)数据库吗?或者每台计算机都有自己的数据库副本? –

回答

2

我花了一个多小时才弄明白了......我试图查看网络配置中是否有问题。所以,我发出:

netstat -na 

它给了我一些线索:它与其他计算机(即做工精细)比较,我发现了一个差异:

不工作:

Proto Local Address   Foreign Address  State 
    TCP [::]:3306    [::]:0     LISTENING  0 

工作:

Proto Local Address   Foreign Address  State 
    TCP 127.0.0.1:3306   127.0.0.1:0   LISTENING 

那么,什么是“[::]”,为什么这个零点在右边?

答:

我发现 “[:]” 是指在IPv6的127.0.0.1(约零点,我不知道)。 因此,我检查了计算机中的TCP/IP设置不工作,并且安装了“TCP/IP IPv6”(工作中没有)。我卸载它,重新启动,瞧!有效! :)

也许某些网卡安装程序自动添加IPv6?无论原因是什么,那就是问题所在。

为了防止它在未来,为了简化,我们可以发出命令:

> ipv6 uninstall 

,它会自动将其删除。

解决这个问题的更优雅的方法是在VB.net系统中实现IPv6支持(我认为它是解释为here),但稍后会做。

我的猜测是默认情况下,MySQL 5.5是否可识别IPv6?我没有找到任何方式来改变设置或任何这类问题的报告。

我希望这可以帮助其他人有同样的问题。

现在我可以去休息...

+1

这仍然适用于使用.Net 4.5的Windows 10 – JRLambert

相关问题