C#使用mysql-connector-net驱动连接mariadb报错

给树莓派用最新的官方OS重刷了一下,并且用apt install mariadb-server装上"mysql"作为我的测试服务器。然后神奇的事情发生了,之前用得好好的程序突然就报错了,经过排查,发现在连接数据库的Open阶段就报错了。写了个最单纯的Console,只是定义了连接字符串,然后Open,也不做catch处理复现了一下,详细错误是:

哦豁,难道mysql给.net的驱动有问题了?我用的是官网下载的mysql-connector-net-8.1.0-noinstall,4.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/

相关推荐
Leo.yuan17 分钟前
不同数据仓库模型有什么不同?企业如何选择适合的数据仓库模型?
大数据·数据库·数据仓库·信息可视化·spark
麦兜*33 分钟前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
chat2tomorrow36 分钟前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl
稻草人想看远方39 分钟前
关系型数据库和非关系型数据库
数据库
考虑考虑40 分钟前
Postgerssql格式化时间
数据库·后端·postgresql
依稀i12343 分钟前
Spring Boot + MySQL 创建超级管理员
spring boot·mysql
千里码aicood1 小时前
【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
java·数据库·spring boot
TDengine (老段)1 小时前
TDengine 选择函数 Max() 用户手册
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
驾驭人生1 小时前
Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
数据库·mysql·.netcore
时光追逐者1 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 53 期(2025年9.1-9.7)
c#·.net·.netcore