解决MySQL大版本升级导致.Net(C#)程序连接报错问题-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

数据库版本从MySQL 5.7.21 升级到 MySQL8.0.21

数据升级完成后直接修改程序的数据库连接配置信息

  <connectionStrings>
    <add name="myConnectionString" connectionString="server=192.168.31.200;uid=app;pwd=FgTDkn0q!75;database=mail;" />
  </connectionStrings>

出现下面错误信息

Authentication method 'caching_sha2_password' not supported by any of the available plugins.

原因是MySQL8的登陆加密规则与MySQL 5.7的不一样导致用户验证方法通过所以有上面异常。

这里可以通过修改mysql配置文件添加下列参数也能解决问题。

default_authentication_plugin=mysql_native_password

但是我们仍然想通过修改程序来彻底解决问题所以就有了下面的步骤。直接去MySQL官网下载connector for NET的安装包安装完成后从安装目录复制MySql.data.dll文件。

如果我们直接使用新的dll文件直接替换覆盖当前运行程序的dll再次运行会出现下面的报错信息

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

这里意思是我们需要在Visual Studio里面移除原来的引用重新引用新的dll文件重新在进行编译使用编译后新的程序运行。

如果重新引用后重新编译构建代码出现下面的错误信息

The type or namespace name "' does not exist in the namespace "' (are you missing an assembly reference?)

这个是目标框架的版本问题请在选择项目右键属性将目标框架从.NET FrameWork4.5改成.NET FrameWork4.7.2保存后重新编译编译构建就行了。

MySql.Data.dll文件说明

MySql.Data.dll 8.0 是 MySQL 数据库的官方 ADO.NET 驱动程序库文件它是用于与 MySQL 数据库进行连接、查询和操作的重要组件。不同版本的 MySql.Data.dll 可能对应不同的 .NET Framework 版本因此我们需要使用正确的版本来确保代码的兼容性和稳定性。

下面是 MySql.Data.dll 8.0 的一些常见版本及其对应的 .NET Framework 版本

MySql.Data.dll 8.0.11对应 .NET Framework 4.5
MySql.Data.dll 8.0.17对应 .NET Framework 4.5.2
MySql.Data.dll 8.0.20对应 .NET Framework 4.6.1
MySql.Data.dll 8.0.25对应 .NET Framework 4.7.2

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql