从c#升级到10.11.5版本后无法连接到MariaDB

问题描述 投票:0回答:3

将 MariaDB 升级到版本 10.11.5 后,我的连接代码无法正常工作。

我使用

MySql.Data.MySqlClient
,但每次我收到错误:

System.InvalidCastException: Object cannot be cast from DBNull to other types.

我的代码在 C# 控制台应用程序上非常简单,仅用于测试。

using MySql.Data.MySqlClient;

string cs = @"server=192.168.0.1;userid=uName;password=passwd;database=dbName";

using var con = new MySqlConnection(cs);
try
{
    con.Open();
    Console.WriteLine($"MySQL version : {con.ServerVersion}");
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}

数据库连接替代方案是什么?

MySql.Data 版本:8.1.0

我的所有 API 应用程序都停止工作了;(

c# mysql mariadb
3个回答
3
投票

最新版本的 MySql.Data 与最新版本的 MariaDB 不兼容。根据 MySQL bug #109331,Oracle 开发团队不支持 MariaDB,并且这种不兼容性不会得到修复。

MariaDB 建议使用MySqlConnector(免责声明:主要作者)。通常它是 MySql.Data 的直接替代品,但请参阅文档以获取有关可能需要处理的一些边缘情况的信息。


2
投票

pre-alpha 版本的软件包试图解决这个问题。您可以尝试一下,如果有帮助请告诉我。

NuGet:https://www.nuget.org/packages/Jf.MySql.Data.Collations/

来源:https://github.com/jeffraska/Jf.MySql.Data.Collations/

该软件包处于“可在我的计算机上运行”状态。这意味着 .NET Framework 4.5、非常旧的 MySql.Data 6.9.7 库和当前在 Debian 存储库中可用的最新 MariaDB 10.11.4。所以不要指望奇迹。

它使用 MySql.Data 库的标准命令拦截器功能(https://dev.mysql.com/doc/connector-net/en/connector-net-interceptors.html)来更改所有

SHOW COLLATION
查询并替换与
SHOW COLLATION WHERE id IS NOT NULL

该包还具有更改 MySql.Data 的内部字符集映射的功能,以允许读取 8.0.28 之前版本的 MySql.Data 中的 utf8mb3 字段。


0
投票

MariaDB 最近在 10.11.7 中修复了该问题 https://jira.mariadb.org/browse/MDEV-31608。因此,如果您无法使用推荐的 MySqlConnector 连接器,则需要升级服务器。

© www.soinside.com 2019 - 2024. All rights reserved.