mysql - '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 的引用时,它似乎在任何版本中都丢失了。
解决方案
我遇到过同样的问题。通过删除 mysql.data 包并从 nuget 包安装 mysqlconnector 解决了这个问题。在之前提到 mysql.data 的所有类中添加 using 语句后,一切正常
推荐阅读
- php - 如何在 Symfony 4 中更新安全令牌中的角色而无需重新登录
- python - 从 csv 导出到 xlsx 文件时,Python 保持日期格式
- r - ggplot2中具有多个因子的折线图
- javascript - 浏览器关闭后本地存储不保存
- r - 使用列名模式在列表中创建新变量
- java - 如何在 Java 处理过程中对文件进行排序
- ios - Cordova 使用 buildConfig 构建 ios 询问我密码以进行代码设计
- php - PHP ldap 模块是否支持 LDAP 通道绑定?
- java - 编译java类“.class”ANT
- javascript - 使用 JS 更改值并使用 POST 传递多个值