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

使用EF Core更新MariaDB数据库时遭遇连接拒绝错误求助

解决MariaDB + EF Core 数据库更新连接拒绝问题

核心问题定位

你当前使用的是EntityFrameworkCore.SqlServer(SQL Server专属的EF Core提供程序),但实际要连接的是MariaDB数据库,两者不兼容,这是导致连接拒绝的根本原因。以下是具体修复步骤:


  1. 替换EF Core数据库提供程序

    • 先卸载SQL Server提供程序:
      dotnet remove package Microsoft.EntityFrameworkCore.SqlServer
      
    • 安装MariaDB/MySQL专用的EF Core提供程序(主流选择是Pomelo):
      dotnet add package Pomelo.EntityFrameworkCore.MySql
      
  2. 修正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并指定服务器版本。

  3. 更新连接字符串格式
    在appsettings.development.json中,将SQL Server格式的连接字符串替换为MariaDB格式:

    "ConnectionStrings": {
        "DefaultConnection": "server=localhost;port=3306;database=GameDb;user=root;password=你的XAMPP数据库密码;"
    }
    

    注意:XAMPP默认MariaDB端口为3306,用户名为root,若未设置密码可省略password=部分。

  4. 重新生成并应用迁移

    • 删除项目中已生成的Migrations文件夹(之前的迁移是基于SQL Server的,无法适配MariaDB)
    • 重新生成初始迁移:
      dotnet ef migrations add Initial
      
    • 执行数据库更新:
      dotnet ef database update
      
  5. 额外验证步骤

    • 确认XAMPP控制面板中MySQL(即MariaDB)服务处于Started状态
    • 用数据库管理工具(如HeidiSQL、Navicat)测试连接字符串,验证是否能正常访问MariaDB
    • 检查本地防火墙是否拦截了3306端口(本地开发环境通常无需额外配置)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:15:07