VB.Net 应用程序无法连接到本地 MySQL,但我可以从命令连接

Posted

技术标签:

【中文标题】VB.Net 应用程序无法连接到本地 MySQL,但我可以从命令连接【英文标题】:VB.Net application can't connect to local MySQL but I can connect from command 【发布时间】:2011-11-28 03:41:07 【问题描述】:

我们有一个 VB.Net 应用程序,它在我们在不同 Windows XP SP3 机器上的测试中运行良好。但是有一台机器显示此错误:

无法连接到任何指定的 mysql 主机

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

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

有没有人有类似的经历,可以指点我正确的方向?

【问题讨论】:

你有一个集中的(只有一个)数据库吗?还是每台计算机都有自己的数据库副本? 【参考方案1】:

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

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?我没有找到任何方法来更改设置,也没有报告此类问题。

我希望这对遇到同样问题的其他人有所帮助。

现在我可以去休息了……

【讨论】:

这仍然适用于带有 .Net 4.5 的 Windows 10

以上是关于VB.Net 应用程序无法连接到本地 MySQL,但我可以从命令连接的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VB.net 中连接到本地网络上的 Access 数据库?

如何使 datagridview 实时连接到本地存储在 VB.NET 中的访问数据库?

Rails 应用程序无法连接到 mysql,无法通过套接字 '/var/run/mysqld/mysql.sock' 连接到本地 MySQL 服务器 (2) (Mysql2::Error)

无法使用 JDBC 连接到 docker 中的本地 MySQL

Android设备无法连接到本地主机中的mysql [关闭]

docker-compose 中的“无法连接到本地 MySQL 服务器”