“MySql.Data.MySqlClient.MySqlConnectAttrs”的类型初始值设定项引发异常

问题描述 投票:0回答:2

我正在尝试创建一个 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 vb.net visual-studio-2019
2个回答
1
投票

我也有同样的问题。通过删除 mysql.data 包并从 nuget 包安装 mysqlconnector 解决了这个问题。在之前引用 mysql.data 的所有类中添加 using 语句后,一切正常


0
投票

将字符串分配给 MySqlConnection 对象的 ConnectionString 属性的模式根据 MySQL.Data 包的版本而变化。 例如,在当前最新版本 9.0.0 中,它会是这样的: myConnectionString = "服务器=127.0.0.1;uid=root;pwd=12345;数据库=测试"; 而在以前的版本中它是这样的: myConnectionString =“服务器=127.0.0.1;数据库=测试”;用户id=root;密码=12345;

© www.soinside.com 2019 - 2024. All rights reserved.