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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/107200.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Wpf 使用 Prism 实战开发Day01

一.开发环境准备 1. VisualStudio 2022 2. .NET SDK 7.0 3. Prism 版本 8.1.97 以上环境,如有新的版本,可自行选择安装新的版本为主 二.创建Wpf项目 1.项目的名称:MyToDo 项目名称:这里只是记录学习,所以随便命名都无所谓,只要觉得合理就…

水声功率放大器的应用场景是什么

水声功率放大器是一种专门用于水声信号处理和传输的设备,通过放大水声信号的功率,以实现远距离传播和提高信号的清晰度和可辨识度。下面是关于水声功率放大器应用场景的详细解释: 水声通信:水声通信是一种在水下进行声波传输的技术…

sharepoint2016-2019升级到sharepoint订阅版

一、升级前准备: 要建立新的sharepoint订阅版环境,需求如下: 1.单服务器硬件需求CPU 4核,内存24G以上,硬盘300G(根据要迁移的数量来扩容大小等); 2.操作系统需要windows server 20…

接口自动化测试工具,Postman使用详解

一、概念 1、Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,Postman分为Postman native app和Postman Chrome app两个版本。目前Chrome app已经停止维护,官方也不推荐使用该版本。 2、官网下载地址:http://www.getpostman…

云计算与ai人工智能对高防cdn的发展

高防CDN(Content Delivery Network)作为网络安全领域的一项关键技术,致力于保护在线内容免受各种网络攻击,包括分布式拒绝服务攻击(DDoS)等。然而,随着人工智能(AI)和大数…

jquery中定义的动态生成的标签元素,点击事件该方法未定义Uncaught ReferenceError: goHere is not defined

如下图: 在点击动态生成的弹窗里的html中的企业列表标签时(该标签绑定了点击事件-goHere), 会提示:Uncaught ReferenceError: goHere is not defined 生成的html代码: // 自定义content function showCo…

Postman如何做接口自动化测试?

前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完…

C# 图解教程 第5版 —— 第10章 语句

文章目录 10.1 什么是语句(*)10.2 表达式语句10.3 控制流语句10.4 if 语句(*)10.5 if ... else 语句(*)10.6 while 循环(*)10.7 do 循环(*)10.8 for 循环10.8…

视觉SLAM数据集(三):KITTI 数据集

教程目录 一、官网二、注册登录三、下载数据集四、测试数据集 一、官网 官网地址:https://www.cvlibs.net/datasets/kitti/eval_odometry.php Kitti数据集很庞大,包含了双目、光流、场景流、深度、里程计、目标、跟踪、马路、语义、原始数据等大类别&…

HarmonyOS原生分析能力,即开即用助力精细化运营

数据分析产品对开发者的价值呈现在两个层面,第一个是产品的层面,可以通过数据去洞察用户的行为,从而找到产品的优化点。另外一个就是运营层面,可以基于数据去驱动,来实现私域和公域的精细化运营。 在鸿蒙生态上&#…

云服务器搭建Zookeeper集群

文章目录 1.集群配置2.zookeeper的群起脚本3. Zookeeper节点的创建和删除相关4. Zookeeper的选举机制 1.集群配置 Zookeeper的集群个数最好保证是奇数个数,因为Zookeeper的选举过程有一个“半数机制”。 5台服务器,可以设置Zookeeper的集群为3或者5&…

矩阵特征值与特征向量的理解

各位朋友大家好,我是小C哈哈哈,很高兴认识大家,在这里,我会将一些枯燥难懂的数学和算法知识以图片或动画的形式通俗易懂的展现给大家,希望大家喜欢。 线性代数中的矩阵特征值与特征向量这两个基本概念总是让很多人摸不…

10款轻量型的嵌入式GUI库分享

LVGL LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用。 特点: 强大的构建模组 按钮、图表、列表、滑块、图像等 ​先进的图形 动画、反锯齿、半透明、平滑滚动 多样…

嵌入式系统中C++ 类的设计和实现分析

C代码提供了足够的灵活性,因此对于大部分工程师来说都很难把握。 本文介绍了写好C代码需要遵循的10个最佳实践,并在最后提供了一个工具可以帮助我们分析C代码的健壮度。 原文:10 Best practices to design and implement a C class。 1. 尽…

Vue-dvadmin-d2-crud-plus-自定义后台菜单-添加页面

文章目录 1.新建数据模型2.新建数据序列类3.新建数据视图4.配置路由5.前端新建View组件6.配置后台7.总结 django-vue-admin是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 🧑‍🤝‍🧑前端采用D2Admin 、Vue、Eleme…

calcite 校验层总结

1、校验的作用 1)完善语义信息 例如在SQL语句中,如果碰到select * 这样的指令,在SQL的语义当中,“*” 指的是取出对应数据源中所有字段的信息,因此就需要根据元数据信息来展开。 2)结合元数据信息来纠偏…

分享一下怎么做陪诊小程序

在当今快节奏的社会中,人们的生活压力越来越大,尤其是在大城市中,由于工作繁忙,生活节奏快,很多人都感到看病难、看病贵的问题。为了解决这一问题,陪诊小程序应运而生。陪诊小程序是一种可以提供线上预约、…

世界前沿技术发展报告2023《世界航空技术发展报告》(四)无人机技术

(四)无人机技术 1.无人作战飞机1.1 美国空军披露可与下一代战斗机编组作战的协同式无人作战飞机项目1.2 俄罗斯无人作战飞机取得重要进展 2.支援保障无人机2.1 欧洲无人机项目通过首个里程碑2.2 美国海军继续开展MQ-25无人加油机测试工作 3.微小型无人机…

shell脚本的编写(输入、输出、变量、数组等的使用规范及实例)

1.shell中变量的定义 使用变量的值: 例子: 2.外部传参/位置变量 例子: 3.输出---echo 4.输入---read 5.命令置换符 作用:把指令的运行结果赋值给变量 6.数组--shell支持稀疏数组

threejs(7)-精通粒子特效

一、初识Points与点材质 // 设置点材质 const pointsMaterial new THREE.PointsMaterial(); import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 导入动画库 import gsa…