ASP.Net Core 3.1+EF Core+MySQL迁移时遇CHARACTER语法错误
问题分析与解决方案
从错误日志能明显看出:你的EF Core正在使用Microsoft.Data.SqlClient(SQL Server专属驱动)执行SQL语句,但你实际要连接的是MySQL——SQL Server不支持CHARACTER SET utf8mb4这类MySQL独有的语法,这才是报错的核心原因。
解决步骤:
安装MySQL的EF Core提供程序
确保项目安装适配ASP.Net Core 3.1的MySQL EF Core驱动,推荐使用Pomelo的包:dotnet add package Pomelo.EntityFrameworkCore.MySql --version 3.2.7(版本3.2.7完美适配EF Core 3.1,同时兼容MySQL 8.0.x版本)
修正DbContext配置
在Startup.cs的ConfigureServices方法中,把原本SQL Server的配置替换为MySQL配置:services.AddDbContext<ApplicationDbContext>(options => options.UseMySql( Configuration.GetConnectionString("DefaultConnection"), new MySqlServerVersion(new Version(8, 0, 31)) // 填写你的MySQL实际版本 ) );检查连接字符串格式
确认appsettings.json里的连接字符串是MySQL格式,而非SQL Server:"ConnectionStrings": { "DefaultConnection": "server=localhost;database=你的数据库名;user=root;password=你的密码;charset=utf8mb4" }重新生成迁移文件
之前的迁移文件是针对SQL Server生成的,需手动删除Migrations文件夹下的旧文件,再重新创建迁移并更新数据库:dotnet ef migrations add InitialIdentityMigration dotnet ef database update
内容的提问来源于stack exchange,提问作者lingeringame
相关产品推荐
相关产品推荐

