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

Entity Framework连接MySQL时字符串转ServerVersion错误如何解决?

问题原因

你使用的是3.0及以上版本的Pomelo.EntityFrameworkCore.MySql驱动,该版本开始UseMySql方法不再支持仅传入连接字符串一个参数,必须额外传入对应MySQL/MariaDB的ServerVersion实例作为第二个参数,因此会触发参数类型转换报错。

解决方案
  • 方案1:自动检测服务器版本(适合开发场景,无需提前知道数据库版本)
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    string connectionStr = @"server=localhost;port=3306;database=shopDb;user=root;password=mysql123;";
    optionsBuilder.UseMySql(connectionStr, ServerVersion.AutoDetect(connectionStr));
}
  • 方案2:手动指定服务器版本(适合生产场景,数据库版本固定,避免自动检测的性能开销)
    如果使用的是MySQL,参考写法:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseMySql(@"server=localhost;port=3306;database=shopDb;user=root;password=mysql123;", 
        new MySqlServerVersion(new Version(8, 0, 33))); // 替换为你实际的MySQL版本号
}

如果使用的是MariaDB,参考写法:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseMySql(@"server=localhost;port=3306;database=shopDb;user=root;password=mysql123;", 
        new MariaDbServerVersion(new Version(10, 6, 8))); // 替换为你实际的MariaDB版本号
}
注意事项

请确认项目已安装正确的NuGet包Pomelo.EntityFrameworkCore.MySql,版本要和你使用的.NET版本、EF Core版本兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:27:01