首页 > 解决方案 > 'MySql.Data.MySqlClient.MySqlConnectAttrs' 的类型初始化程序引发异常

问题描述

我正在尝试创建一个 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 连接器。很明显,2020 年初/中期与 VS 和 MySQL 存在重大兼容性问题,我已经看到从那时起有一些积极更新的暗示,但没有实际细节。

2021 年有没有人找到将 VS2019 VB.NET 连接到 MySQL 的方法?我错过了参考还是需要安装 System.Management?这样的 dll 听起来有点太重要了,不能错过......在检查我是否可以添加对 System.Management 的引用时,它似乎在任何版本中都丢失了。

标签: mysqlvb.netvisual-studio-2019

解决方案


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


推荐阅读