EF迁移错误-Azure-App上的MySql

时间:2018-07-26 23:35:53

标签: mysql azure migration

我正在尝试使用MySql on App(免费层(始终未启用))在Azure上的Web应用程序asp.net core 2.1上运行所有待处理的迁移,但是我收到错误消息,如日志文件中所示:

"Microsoft.EntityFrameworkCore.Database.Connection: An error occurred using the connection to database '' on server '127.0.0.1:54184'"

我正在使用的mysql软件包是Pomelo.EntityFrameworkCore.MySql,版本2.1.1。 我正在Startup类的Configure方法中运行以下代码:

using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
    using (var context = serviceScope.ServiceProvider.GetService<SandroDbContext>())
    {
        context.Database.Migrate();
    }
}

似乎可以从环境变量中为 App中的MySql 获取正确的服务器和端口,而不是数据库名称。

更新: 即使我删除代码行以应用迁移,它也不起作用。 简单地通过注入DbContext我有相同的错误。 可能是因为当Web应用启动时,应用中的Sql尚不可用。

1 个答案:

答案 0 :(得分:0)

似乎问题出在Azure通过环境变量提供的连接字符串。它错过了参数“端口”,因为端口在服务器名称旁边,但是这种方式的连接字符串无效。我已经写了几行代码来解决它。

        public string FixAzureConnectionString(string connStr)
        {
            string goodConnStr = connStr;
            string portNumber = Regex.Match(goodConnStr, @"(?<=Data Source.+:)\d+")?.Value;
            goodConnStr += ";Port=" + portNumber;
            goodConnStr = goodConnStr.Replace(":" + portNumber, "");
            return goodConnStr;
        }