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

使用MySQL执行Update-Database报错:Keyword not supported: 'userid'

问题分析与解决方案

看起来你踩了一个很典型的EF Core跨数据库适配坑——你的项目默认绑定了SQL Server的EF Core提供者,但你实际要连接的是MySQL,再加上连接字符串关键字不匹配,才导致了这个错误。下面一步步帮你解决:

1. 先装对MySQL的EF Core驱动

首先得给项目安装MySQL对应的EF Core提供者,目前最常用的是Pomelo的驱动。打开包管理器控制台执行:

Install-Package Pomelo.EntityFrameworkCore.MySql -Version [和你EF Core版本匹配的号]

比如你用的是EF Core 6.0.x,就装6.0系列的Pomelo包,版本不匹配会出其他问题。

2. 把DbContext切换到MySQL提供者

找到你项目里的DbContext类(一般在Infrastructure层),修改OnConfiguring方法,把原来的UseSqlServer换成UseMySql:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json")
            .Build();
        // 替换成你的MySQL版本,比如8.0.30
        optionsBuilder.UseMySql(configuration.GetConnectionString("DefaultConnection"), 
            new MySqlServerVersion(new Version(8, 0, 30)));
    }
}

如果是.NET 6+的Program.cs里配置服务,就改成:

builder.Services.AddDbContext<YourDbContext>(options =>
    options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnection"),
        new MySqlServerVersion(new Version(8, 0, 30))));

3. 修正MySQL连接字符串的关键字

MySQL的连接字符串里,userid不是标准写法,换成user或者uid都可以,修正后的配置:

"ConnectionStrings": {
  "DefaultConnection": "server=localhost;user=root;pwd=root;port=3306;database=ddd;sslmode=none;"
}

4. 重新执行迁移流程

因为之前的迁移是基于SQL Server生成的,先移除它:

Remove-Migration

然后重新生成适配MySQL的迁移:

Add-Migration FirstMigration

最后执行数据库更新:

Update-Database

为啥会出这个错?

你之前Add-Migration成功是因为迁移生成阶段不需要真正连接数据库,但Update-Database时EF Core会用默认的SQL Server驱动去解析你的MySQL连接字符串——而SQL Server的连接字符串里根本没有userid这个关键字(它用的是User ID),所以直接抛出了参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:25:28