【问题标题】:Unable to connect to Aurora MySql using .net core application deployed on Aws Ecs无法使用部署在 Aws Ecs 上的 .net 核心应用程序连接到 Aurora MySql
【发布时间】:2020-03-18 08:21:19
【问题描述】:

我在 .net core 3.1 中有一个应用程序,我正在使用 MySql。要连接到 MySql,我正在使用 Pomelo.EntityFrameworkCore.MySql nuget。

我的 .net 核心应用程序部署为 AWS ECS 上的 docker 容器,我使用 Aurora MySql RDS 存储数据。我已授予对 Aurora MySql 的“可公开访问”访问权限,我可以使用 MySql 工作台连接到数据库,也可以使用 localhost 连接到我的 .net 核心应用程序。但是当我部署应用程序并尝试执行任何数据库操作时,它开始抛出异常:

引发了一个异常,可能是由于瞬态 失败。考虑通过添加来启用瞬态错误恢复能力 'EnableRetryOnFailure()' 到 'UseMySql' 调用。

然后我添加了这样的重试模式:

 services.AddDbContextPool<DataContext>(options =>
      options.UseMySql(Configuration.GetConnectionString("DefaultConnection"), builder =>
      {
          builder.EnableRetryOnFailure(5, TimeSpan.FromSeconds(5), null);
      }
  );

我的连接字符串是这样的:

"DefaultConnection": "Server=db-cluster-1-instance-1.cqb2fsjwx78p.us-east-2.rds.amazonaws.com;Database=dbName;User ID=admin;Password=password;port=3306"

添加重试模式后。我收到此错误:

"执行数据库时超过最大重试次数 (5) 使用“MySqlRetryingExecutionStrategy”进行操作。见内部异常 对于最近的失败。”

所以我怀疑,这是另一回事。我在这里做错了什么?或者在aws方面可能有问题

【问题讨论】:

    标签: mysql asp.net-core amazon-ec2 amazon-rds pomelo-entityframeworkcore-mysql


    【解决方案1】:

    所以问题与我正在拉的 docker 图像有关。 我正在使用mcr.microsoft.com/dotnet/core/sdk:3.1。将其更改为mcr.microsoft.com/dotnet/core/sdk:3.1-bionic 有效。 https://github.com/dotnet/SqlClient/issues/222

    【讨论】:

    • 有同样的问题,这解决了它。很棒的发现!我不知道它与 docker 图像有关...
    【解决方案2】:

    SslMode=None 添加到您的连接字符串并查看连接是否有效(请参阅MySqlConnector's Connection String Options)。瞬态异常只是意味着 Pomelo(即 MySqlConnector)无法连接到数据库服务器。

    所以这与连接问题有关(可以通过更改连接字符串或更改您的 Aurora/防火墙配置来解决)。

    【讨论】:

      猜你喜欢
      • 2021-06-02
      • 2018-09-09
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多