【问题标题】:Unable to connect to MariaDB using EF Core in .NET 6无法在 .NET 6 中使用 EF Core 连接到 MariaDB
【发布时间】:2022-01-11 19:20:05
【问题描述】:

我将 DI 用于 Web API 并像这样注册我的 DbContext 类:

services.AddDbContext<MyDbContext>(
    options => options.UseMySql(ServerVersion.AutoDetect(Configuration.GetConnectionString("EntityFramework:MyDbContext:ConnectionStringKey")), 
    builder => builder.CommandTimeout(1800).EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null))
);

这是我的项目用户机密:

"EntityFramework": {
  "PigDbContext": {
    "ConnectionStringKey": "server=pbr-dbs-01:3306;database=pb_db_operational;uid=root;pwd=myPassword;"
  }
}

在调试期间,当我调用该方法时,大约 3-5 秒后,当主机尝试初始化 DbContext 类时,我得到一个连接超时异常。内部异常显示“无法连接到任何指定的 mysql 主机”,但是当我使用数据库管理工具时,我可以从我的机器上进行连接。

任何想法是什么导致了这个问题?我已经尝试重新排列连接字符串中的参数,如另一篇关于此错误消息的 SO 帖子中所述。那里的其他人提到了 VPN,但由于我在家工作,我无法禁用我的 VPN,否则我将失去与数据库的连接。

【问题讨论】:

    标签: entity-framework-core mariadb .net-6.0


    【解决方案1】:

    您没有正确设置端口。它需要是一个单独的键:

    Server=pbr-dbs-01; Port=3306; Database=pb_db_operational; Uid=root; Pwd=myPassword;
    

    【讨论】:

    • 在我尝试将它添加到服务器名称之前,我将它放在一个单独的参数中,就像你说的那样。没有区别。
    • 你使用的是哪个 MySQL nuget 包?
    • 我尝试使用 Pomelo 6.0.0,我尝试了 MySql.Data 8.0.27(尽管他们的文档只升级到 8.0.23..),我尝试了 MySqlConnector,我后来了解到它被柚。我现在使用 linq2db 而不是 EF,因为 mysql.Data 似乎可以正常使用它。
    猜你喜欢
    • 2022-09-28
    • 1970-01-01
    • 2015-10-13
    • 2019-10-03
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 2021-12-29
    • 2018-03-12
    相关资源
    最近更新 更多