首页 > 解决方案 > 在 MySql.Data 8.0.26 上出现 SSL 连接错误

问题描述

所以我很长一段时间以来一直在使用 NuGet 的 MySql.Data 来连接我在许多不同的 .NET 项目中的 MariaDB 数据库。碰巧现在我正在启动一个新的 .NET5 项目并重新开始,刚刚安装了 MySql.Data 包的最新版本 8.0.26,但是在尝试连接到数据库时出现以下错误:

MySql.Data.MySqlClient.MySqlException HResult=0x80004005 消息=SSL 连接错误。Source=MySql.Data StackTrace:在 MySql.Data.MySqlClient.NativeDriver.Open() 在 MySql.Data.MySqlClient.Driver.Open() 的 MySql.Data.Common.Ssl.StartSSL(Stream& baseStream, Encoding encoding, String connectionString) ) 在 MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder 设置) 在 MySql.Data.MySqlClient.MySqlConnection.Open() 在 MySqlSSLErrorTest.Program.Main(String[] args) 在 C:\Users\Murillo\source\repos \MySqlSSLErrorTest\MySqlSSLErrorTest\Program.cs:第 16 行

此异常最初是在此调用堆栈中引发的: System.Net.Security.SslStream.ReceiveBlobAsync(TIOAdapter) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task ) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) System.Threading.Tasks.ValueTask.Result.get() System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable.ConfiguredValueTaskAwaiter.GetResult() System.Net.Security .SslStream.ForceAuthenticationAsync(TIOAdapter, bool, byte[], bool)

内部异常 1:AggregateException:发生一个或多个错误。(无法确定帧大小或接收到损坏的帧。)

内部异常 2:IOException:无法确定帧大小或接收到损坏的帧。

现在,正如我一直在搜索的那样,版本 8.0.26 似乎有一些变化,正如MySql 网站上关于这个问题所说的(也许?),但我无法理解究竟是什么我需要对我的连接字符串进行更改以使其工作。

这里我留下一个非常简单的 Console App 示例来重现错误:

class Program
{
    
    static void Main(string[] args)
    { 
        MySqlConnection con = new MySqlConnection("DATABASE=myDB; data source=localhost; user=root; PASSWORD=pass; POOLING=FALSE;");

        con.Open(); //ERROR HERE
    }
}

我知道我可以将包降级到旧版本以使其正常工作,但我想了解如何解决此问题以便了解最新功能。

谢谢!

标签: c#mysqlmysql.data

解决方案


推荐阅读