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

Azure「Web App + Database」部署中执行migrate命令报错求助

解决Azure App Service中.NET Core迁移MySQL数据库的连接字符串问题

核心问题

你混淆了SQL Server与MySQL的连接字符串语法,教程默认适配SQL Server,但你实际使用Azure MySQL,而迁移工具migrate默认识别SQL Server的连接关键字,导致出现port、SSL Mode等关键字错误;后续的SQL Server连接错误,是工具仍在尝试用SQL Server驱动连接MySQL服务器所致。

具体解决步骤

1. 修正Azure MySQL连接字符串格式

适配.NET Core MySQL驱动(如Pomelo.EntityFrameworkCore.MySql)的正确格式:

Server=xxx.mysql.database.azure.com;Database=xxx;Port=3306;Uid=xxx;Pwd=xxx;SslMode=Required

注意关键语法差异:

  • 用Uid替代User Id
  • 用Pwd替代Password
  • 用SslMode替代SSL Mode(大小写和写法严格匹配)

2. 确保项目适配MySQL EF Core Provider

你的迁移包是针对SQL Server生成的,需重新适配MySQL:

  • 安装MySQL EF Core包:
    dotnet add package Pomelo.EntityFrameworkCore.MySql
    
  • 在DbContext配置中切换为MySQL驱动(以Program.cs为例):
    builder.Services.AddDbContext<MyDatabaseContext>(options =>
        options.UseMySql(
            builder.Configuration.GetConnectionString("AZURE_MYSQL_CONNECTIONSTRING"),
            ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("AZURE_MYSQL_CONNECTIONSTRING"))
        )
    );
    
  • 重新生成迁移文件:
    dotnet ef migrations add InitialCreate
    
  • 重新发布适配MySQL的迁移包到App Service。

3. 区分本地与生产环境配置

本地appsettings.json中使用SQL Server LocalDB的连接字符串无问题,但生产环境需通过App Service的「应用程序设置」配置正确的MySQL连接字符串,避免本地与生产配置混淆。

4. 验证Azure MySQL防火墙权限

确保App Service的出站IP已加入Azure MySQL服务器的防火墙允许列表,否则会出现连接超时或无法访问的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:23:27