.Net Core连接MySql 异常 Sequence contains more than one matching element

15 篇文章 0 订阅

.Net  连接MySql的常用的组件肯定都是用的MySql.Data。

最近开发的项目,在开发环境,测试环境跑的好好的,一上线,开始抛异常,打开日志发现了一下异常:

晚上在那里调程序,把mysql.data组件的nuget包进行了更新,前几天好好的程序,开始抛错,跟踪断点发现以下的异常:

MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts.
 ---> System.InvalidOperationException: Sequence contains more than one matching element

看到第一句,一开始以为是数据库出了错误,去检查数据库状态正常,用Navicat Premium连接也是正常的,有点不明所以。
又认真看了下,发现这个异常下面还有个提示:

System.InvalidOperationException: Sequence contains more than one matching element

序列包含多个匹配元素

这是个什么鬼,网上搜索了一下,发现这个是mysql.data 8.0.18 版本组件的一个bug
意思是在连接字符串使用了域名来连接mysql.而mysql组件在解析时发现IP与以前访问的Ip不一致,于是拒绝连接。

解决的办法有几个:

As I see it, you have three options:

  1. Downgrade to 8.0.17.
  2. Use your workaround of performing DNS resolution yourself, then using an IP address in the connection string.
  3. Switch MySQL libraries (to MySqlConnector).

如我所见,您有三个选择:
1)降级至8.0.17。
2)使用您自己执行DNS解析的解决方法,然后在连接字符串中使用IP地址。
3)切换MySQL库(到MySqlConnector)。

我选择把连接字符串更改成IP的形式访问,问题得到了解决。
但是这显然不是一个最终解决的办法。

官方提出:

Posted by developer:

Fixed as of the upcoming MySQL Connector/NET 8.0.20 release, and here's the proposed changelog entry from the documentation team:

A connection made to a named server with multiple DNS entries pointing to
different IP addresses for the same server generated an exception. Now,
only the first element is returned when multiple elements are found.

Thank you for the bug report.
在即将推出的MySQL Connector / NET 8.0.20版本中已修复,这是文档团队建议的changelog条目:

与指定服务器建立的连接,其中有多个DNS条目指向
同一服务器的不同IP地址生成异常。 现在,
找到多个元素时,仅返回第一个元素。

目前MySql.Data版本已发布到8.0.27版本,更新到最新版本,已解决这个问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值