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

EF6搭配MySQL更新数据库触发FormatException问题求助

解决EF6 + MySQL8.0更新数据库时的FormatException问题

这个问题我之前帮同事排查过,核心原因是你使用的MySQL.Data v6.10.9版本和MySQL 8.0.18存在兼容性冲突——旧版本的MySQL EF Provider在处理MySQL 8.x的版本号解析时会触发格式转换错误,堆栈里的System.Number.ParseDouble调用就是最直接的证据,它在尝试把MySQL版本号转换为double类型时失败了。

解决方案步骤

1. 升级MySQL相关NuGet包到兼容MySQL 8.x的版本

旧版的MySQL.Data v6.x对MySQL 8.x的支持不完善,必须升级到8.0.x系列版本,建议和你的MySQL服务器版本(8.0.18)保持一致,避免版本差异带来的其他问题:

  • 通过NuGet包管理器控制台执行以下命令:
    Install-Package MySQL.Data -Version 8.0.18
    Install-Package MySQL.Data.Entity -Version 8.0.18
    
    如果你用的是Visual Studio的图形化NuGet管理器,直接搜索这两个包并选择对应版本安装即可。

2. 验证EF配置文件的正确性

升级完成后,检查你的App.config或Web.config中的Entity Framework配置,确保provider指向正确的MySQL EF6驱动:

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="mssqllocaldb" />
    </parameters>
  </defaultConnectionFactory>
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" 
              type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    <provider invariantName="System.Data.SqlClient" 
              type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>
</entityFramework>

同时确认连接字符串的providerName是MySql.Data.MySqlClient:

<connectionStrings>
  <add name="DBModel" 
       connectionString="server=localhost;port=3306;database=your_db;uid=root;pwd=your_password;" 
       providerName="MySql.Data.MySqlClient" />
</connectionStrings>

3. 清理旧迁移并重新生成(可选但推荐)

如果之前的迁移文件是基于旧驱动生成的,可能残留兼容性问题,建议清理后重新生成:

  • 删除项目中Migrations文件夹下的所有迁移文件(保留Configuration.cs如果有自定义配置)
  • 在NuGet控制台执行:
    Enable-Migrations -Force  # 如果之前已启用过迁移,这一步会重置配置
    Add-Migration InitialCreate
    Update-Database
    

补充说明

MySQL 8.x引入了一些新特性(比如默认身份认证插件变更),旧版本的驱动不仅会在版本号解析上出问题,还可能遇到身份认证、语法支持等其他兼容性问题,所以升级驱动是最根本的解决办法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:22:38