晚上在那里調(diào)程序童擎,把mysql.data組件的nuget包進(jìn)行了更新滴劲,前幾天好好的程序,開始拋錯顾复,跟蹤斷點(diǎn)發(fā)現(xiàn)以下的異常:
Unable to connect to any of the specified MySQL hosts.
一開始以為數(shù)據(jù)庫出了錯誤班挖,去檢查數(shù)據(jù)庫狀態(tài)正常,用Mysql workbench在遠(yuǎn)程連接也正常芯砸。感覺有點(diǎn)奇怪萧芙。
又認(rèn)真看了下给梅,發(fā)現(xiàn)這個異常下面還有個提示:
INNER EXCEPTION:
Sequence contains more than one matching element
這是個什么鬼,網(wǎng)上搜索了一下双揪,發(fā)現(xiàn)這個是mysql.data組件的一個bug
大意是在連接字符串使用了www.xxx.com這樣的域名來連接mysql.而mysql組件在解析時發(fā)現(xiàn)IP與以前訪問的Ip不一致破喻,于是拒絕連接。
解決的辦法有幾個:
As I see it, you have three options:
- Downgrade to 8.0.17.
- Use your workaround of performing DNS resolution yourself, then using an IP address in the connection string.
- Switch MySQL libraries (to MySqlConnector).
如我所見盟榴,您有三個選擇:
1)降級至8.0.17。
2)使用您自己執(zhí)行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版本中已修復(fù)章蚣,這是文檔團(tuán)隊(duì)建議的changelog條目:
與指定服務(wù)器建立的連接站欺,其中有多個DNS條目指向
同一服務(wù)器的不同IP地址生成異常。 現(xiàn)在纤垂,
找到多個元素時矾策,僅返回第一個元素。
我在nuget服務(wù)器里看了下峭沦,8.0.20還沒有上線贾虽。只有等上線后再解決吧。