使用EF Core更新MariaDB数据库时遭遇连接拒绝错误求助
解决MariaDB + EF Core 数据库更新连接拒绝问题
核心问题定位
你当前使用的是EntityFrameworkCore.SqlServer(SQL Server专属的EF Core提供程序),但实际要连接的是MariaDB数据库,两者不兼容,这是导致连接拒绝的根本原因。以下是具体修复步骤:
替换EF Core数据库提供程序
- 先卸载SQL Server提供程序:
dotnet remove package Microsoft.EntityFrameworkCore.SqlServer - 安装MariaDB/MySQL专用的EF Core提供程序(主流选择是Pomelo):
dotnet add package Pomelo.EntityFrameworkCore.MySql
- 先卸载SQL Server提供程序:
修正DbContext配置代码
将Program.cs或GameDbContext中原本的UseSqlServer配置替换为UseMySql:// Program.cs 示例配置 builder.Services.AddDbContext<GameDbContext>(options => options.UseMySql( builder.Configuration.GetConnectionString("DefaultConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection")) ) );如果是在GameDbContext的
OnConfiguring方法中配置,同样替换为UseMySql并指定服务器版本。更新连接字符串格式
在appsettings.development.json中,将SQL Server格式的连接字符串替换为MariaDB格式:"ConnectionStrings": { "DefaultConnection": "server=localhost;port=3306;database=GameDb;user=root;password=你的XAMPP数据库密码;" }注意:XAMPP默认MariaDB端口为3306,用户名为
root,若未设置密码可省略password=部分。重新生成并应用迁移
- 删除项目中已生成的
Migrations文件夹(之前的迁移是基于SQL Server的,无法适配MariaDB) - 重新生成初始迁移:
dotnet ef migrations add Initial - 执行数据库更新:
dotnet ef database update
- 删除项目中已生成的
额外验证步骤
- 确认XAMPP控制面板中MySQL(即MariaDB)服务处于
Started状态 - 用数据库管理工具(如HeidiSQL、Navicat)测试连接字符串,验证是否能正常访问MariaDB
- 检查本地防火墙是否拦截了3306端口(本地开发环境通常无需额外配置)
- 确认XAMPP控制面板中MySQL(即MariaDB)服务处于
内容的提问来源于stack exchange,提问作者Joao Silva
相关产品推荐
相关产品推荐

