ASP.NET Core连接MySQL执行Update-Database提示port关键字不支持如何解决
问题根因
报错堆栈中出现Microsoft.EntityFrameworkCore.SqlServer相关类,说明你当前项目的EF Core数据库提供程序配置为SQL Server,SQL Server的连接字符串不支持Port关键字,只有MySQL专属的EF Core提供程序才能识别Port、SslMode这类MySQL连接参数,所以触发参数不支持的异常。
另外ASP.NET Core默认不使用web.config作为配置文件,旧教程中修改web.config的方案不适用于你的项目,无需查找该文件。
解决步骤
- 首先安装MySQL对应的EF Core提供程序,推荐使用维护状态更好的
Pomelo.EntityFrameworkCore.MySql包,你可以在NuGet包管理器中搜索安装,也可以直接在包管理器控制台执行命令:Install-Package Pomelo.EntityFrameworkCore.MySql - 修改DbContext注册代码:
如果是.NET 6及以上版本,修改Program.cs中的注册逻辑,把原来的UseSqlServer改成UseMySql,示例如下:
如果是.NET 5及以下版本,修改var connectionString = builder.Configuration.GetConnectionString("AuthDBContextConnection"); builder.Services.AddDbContext<AuthDBContext>(options => options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));Startup.cs中ConfigureServices方法里的对应注册逻辑即可。 - 清理连接字符串中的冗余参数:
Trusted_Connection=True、MultipleActiveResultSets=true是SQL Server专属参数,MySQL不识别,可以直接删除,修正后的连接字符串参考:"AuthDBContextConnection": "Server=localhost;Port=xxxx;Database=xxxx;User ID = xxx;Password=xxxx;Pooling=false;SslMode=none;convert zero datetime=True;" - 重新在包管理器控制台执行
Update-Database即可正常执行迁移。
内容的提问来源于stack exchange,提问作者leo
相关产品推荐
相关产品推荐

