上海金工建设集团有限公司网站,广安做网站,海南做网站的网络公司,建设很多网站能赚到钱给树莓派用最新的官方OS重刷了一下#xff0c;并且用apt install mariadb-server装上“mysql”作为我的测试服务器。然后神奇的事情发生了#xff0c;之前用得好好的程序突然就报错了#xff0c;经过排查#xff0c;发现在连接数据库的Open阶段就报错了。写了个最单纯的Con…给树莓派用最新的官方OS重刷了一下并且用apt install mariadb-server装上“mysql”作为我的测试服务器。然后神奇的事情发生了之前用得好好的程序突然就报错了经过排查发现在连接数据库的Open阶段就报错了。写了个最单纯的Console只是定义了连接字符串然后Open也不做catch处理复现了一下详细错误是 哦豁难道mysql给.net的驱动有问题了我用的是官网下载的mysql-connector-net-8.1.0-noinstall4.6.2和4.8同样问题。同样的程序连接到别的数据库还是正常的估计就是新的mariadb不被支持了。
网上找了一圈发现确实可能就是这个原因。因为mariadb虽然脱胎于mysql但终将渐行渐远官方mysql驱动只会保证支持自己的mysql。
根据论坛里某位网友的提示直接在控制台登录进能连和不能连的数据库后用show collation看到了区别果然新装的mariadb上有一堆null程序可正常运行的就没有。猜测驱动一旦连接上数据库后会获取这些信息如果对空值未作处理的话就报错了。
解决办法倒也简单粗暴放弃mysql官方驱动改用MySqlConnector。NuGet Gallery | MySqlConnector 2.2.7
我的程序比较老当时用的framework做框架所以切到当前工程下打开包管理器控制台输入 NuGet\Install-Package MySqlConnector -Version 2.2.7安装。
代码修改也很简单把之前的using MySql.Data.MySqlClient 直接替换成using MySqlConnector其余部分几乎可以零修改。 参考资料MySQL Bugs: #109331: MySQL Connector fails to connect to MariaDB 10.10.2
https://mysqlconnector.net/overview/installing/