我正在尝试创建一个 Windows 窗体应用程序(VS2019、VB.NET、MySQL Connector Net 8.0.23、MySQL.Data v4.5.2、Windows 10)来与远程 MySQL 服务器交互。 我使用正确的服务器名称、用户名、密码和数据库。 我可以使用 MySQL Workbench 在同一系统上使用相同的凭据从该 IP 地址连接到数据库。 我还可以连接到服务器并通过 VS2019 中的服务器资源管理器运行查询。
在尝试初始连接时使用:
conn = New MySqlConnection("server=<server>;user=<username>;password=<password>;database=<database>")
conn.Open()
我收到错误消息
The type initializer for 'MySql.Data.MySqlClient.MySqlConnectAttrs' threw an exception.
System.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.MySqlConnectAttrs' threw an exception.
---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
File name: 'System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
at MySql.Data.MySqlClient.MySqlConnectAttrs.InitOSDetails()
at MySql.Data.MySqlClient.MySqlConnectAttrs..cctor()
--- End of inner exception stack trace ---
at MySql.Data.MySqlClient.NativeDriver.SetConnectAttrs()
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.Authenticate(Boolean reset)
at MySql.Data.MySqlClient.NativeDriver.Authenticate(String authMethod, Boolean reset)
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at KDA_POS.clsDatabase.ConnOpen() in [...]\clsDatabase.vb:line 22
显然,最相关的细节是
---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
我已经搜索了很多,但是任何带有建议解决方案的帖子都太旧了 - 它适用于 VS2017 或更早版本,并且使用更旧版本的 MySQL Connector。 很明显,在 2020 年初/中期,VS 和 MySQL 存在重大兼容性问题,并且我看到了一些暗示,从那时起有一些积极的更新,但没有实际的细节。
有人找到2021年VS2019 VB.NET连接MySQL的方法了吗? 我是否错过了参考或者我是否需要安装 System.Management? 这样的 dll 听起来有点太重要了,不能丢失...在检查我是否可以添加对 System.Management 的引用时,它似乎在任何版本中都丢失了。
我也有同样的问题。通过删除 mysql.data 包并从 nuget 包安装 mysqlconnector 解决了这个问题。在之前引用 mysql.data 的所有类中添加 using 语句后,一切正常
将字符串分配给 MySqlConnection 对象的 ConnectionString 属性的模式根据 MySQL.Data 包的版本而变化。 例如,在当前最新版本 9.0.0 中,它会是这样的: myConnectionString = "服务器=127.0.0.1;uid=root;pwd=12345;数据库=测试"; 而在以前的版本中它是这样的: myConnectionString =“服务器=127.0.0.1;数据库=测试”;用户id=root;密码=12345;