Mac下.NET Core MVC项目数据库迁移报错求助
解决“Connection string keyword 'server' is not supported”报错
核心原因
这个报错通常是EF Core使用的数据库提供程序与连接字符串格式不匹配,或依赖包缺失导致的。结合你的场景,按以下步骤排查:
1. 安装正确的EF Core SQL Server提供程序
确保项目已安装Microsoft.EntityFrameworkCore.SqlServer NuGet包,若未安装,在终端执行:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
2. 检查DbContext配置代码
在Program.cs(.NET 6+)或Startup.cs(旧版本)中,确保配置DbContext时使用UseSqlServer方法,而非其他数据库提供程序(比如Sqlite的UseSqlite)。示例代码:
// Program.cs 示例 var builder = WebApplication.CreateBuilder(args); // 配置DbContext并指定SQL Server提供程序 builder.Services.AddDbContext<YourDbContextName>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); var app = builder.Build(); // ... 其他中间件配置
3. 修正Docker环境下的连接字符串
若SQL Server运行在Docker容器中,localhost无法直接访问容器内服务,需修改Server值:
- 方法一:使用SQL Server容器名称(启动容器时通过
--name指定,比如mssql-db),端口默认1433:"ConnectionStrings": { "DefaultConnection": "Server=mssql-db,1433;Database=leavemanagementnet6;User=SA;Password=MyPassword123#;" } - 方法二:获取容器IP地址替换
localhost:
执行命令查询容器IP:
再修改连接字符串:docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 你的SQL Server容器ID或名称"ConnectionStrings": { "DefaultConnection": "Server=容器IP地址,1433;Database=leavemanagementnet6;User=SA;Password=MyPassword123#;" }
4. 验证连接字符串格式
确认连接字符串无语法错误:
- SQL Server连接字符串关键字不区分大小写,但需拼写正确(比如
Server不要写成其他词汇) - 密码中的特殊字符(如
#)在JSON配置中无需额外转义,你的当前配置无问题
完成以上步骤后,重新执行dotnet ef database update即可。
内容的提问来源于stack exchange,提问作者jerrycalebj
相关产品推荐
相关产品推荐

