You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework4.8下DbProviderFactories无法识别MySQL Connector 8.0.33

解决.NET Framework 4.8中MySQL Connector 8.0.33无法被DbProviderFactories识别的问题

问题背景

基于.NET Framework 4.8开发的应用,通过DbProviderFactories.GetFactoryClasses()获取已安装的数据库提供程序时,MySQL Connector 8.0.25能正常被识别,但升级至8.0.33版本后,该提供程序不再出现在列表中。

已尝试的无效操作

  • 在app.config中手动添加DbProviderFactories配置项,问题未解决
  • 调用DbProviderFactories.GetFactory("MySql.Data.MySqlClient")时,抛出“连接器未安装”异常(实际已安装)
  • 调整配置后,GetFactoryClasses()能识别到8.0.33版本,但调用GetFactory(dbProvider.InvariantName)时抛出异常:
    System.Configuration.ConfigurationErrorsException: 'Failed to find or load the registered .Net Framework Data Provider.'
    
  • 将MySql.Data.dll复制到应用bin目录、手动注册至GAC,均未解决问题

解决方案

1. 确认配置版本和公钥正确性

  • 右键MySql.Data.dll→属性→详细信息,核对版本号是否与app.config中Version字段完全一致(部分8.0.33版本的dll版本为8.0.33.0而非8.0.33.1,需严格匹配)
  • 使用命令sn -T MySql.Data.dll获取公钥令牌,确保与配置中的PublicKeyToken=c5687fc88969c44d一致(MySQL官方组件的公钥令牌通常为此值,但需验证)

2. 清理machine.config中的旧注册

旧版本MySQL Connector可能在系统machine.config中留下残留注册,导致版本冲突:

  • 打开对应.NET Framework版本的machine.config文件:
    • 32位:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
    • 64位:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
  • 查找<DbProviderFactories>节点,删除所有包含MySql.Data.MySqlClient的旧注册项
  • 保存文件后重启应用

3. 修正app.config配置(先移除再添加)

在app.config中先移除可能存在的旧注册,再添加8.0.33版本的配置:

<system.data>
  <DbProviderFactories>
    <remove invariant="MySql.Data.MySqlClient" />
    <add name="MySQL Data Provider" 
         invariant="MySql.Data.MySqlClient" 
         description=".Net Framework Data Provider for MySQL" 
         type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.33.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

注意替换Version为实际dll的版本号

4. 验证程序集加载与依赖

  • 确保应用bin目录中只有8.0.33版本的MySql.Data.dll及相关依赖(如MySqlConnector.dll),无旧版本文件残留
  • 使用Process Monitor跟踪应用启动时的程序集加载情况,排查是否存在加载路径错误或依赖缺失

5. 确认GAC注册有效性

  • 打开管理员权限的命令提示符,执行gacutil /l MySql.Data查看GAC中注册的版本,确认8.0.33版本已存在
  • 若未注册,执行gacutil /i MySql.Data.dll手动注册(注意匹配应用平台:32位dll注册到32位GAC,64位则对应64位)

内容的提问来源于stack exchange,提问作者zaidabuhijleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:41:01