You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2022下MySqlConnection.Open()抛DBNull转换异常求助

问题描述

用C#编写的MariaDB连接程序在Windows 10/11环境运行正常,但部署到Windows Server 2022时,调用Database.Open()抛出以下异常:

System.InvalidCastException: Object cannot be cast from DBNull to other types.
   at System.DBNull.System.IConvertible.ToInt32(IFormatProvider provider)
   at System.Convert.ToInt32(Object value, IFormatProvider provider)
   at MySql.Data.MySqlClient.Driver.LoadCharacterSets(MySqlConnection connection)
   at MySql.Data.MySqlClient.Driver.Configure(MySqlConnection connection)
   at MySql.Data.MySqlClient.MySqlConnection.Open()
   at MariaDB.Program.StartAPI()

已确认MariaDB运行正常、SSL功能可用、用户权限配置正确、端口设置无误,求可行的解决思路。

程序完整代码:

using System;
using MySql.Data.MySqlClient;

namespace MariaDB
{
    internal class Program
    {
        MySqlConnection Database = new MySqlConnection("Server=127.0.0.1; Port=3306; Database=test; Uid=user; Pwd=MyPassword; Ssl Mode=Required; convert zero datetime=True;");

        static void Main(string[] args)
        {
            Program p = new Program();
            p.OpenDB();
        }

        private void OpenDB()
        {
            Database.Open();
            Console.WriteLine("Ok");
            Console.ReadLine();
        }
    }
}
解决思路
  • 替换数据库驱动:MySql.Data官方维护进度缓慢,对MariaDB 10.11.x版本的兼容性存在瑕疵。建议改用MySqlConnector(当前维护活跃的MySQL/MariaDB驱动库),替换后只需将代码中的命名空间从MySql.Data.MySqlClient改为MySqlConnector,连接字符串可直接复用。
  • 连接字符串显式指定字符集:在连接字符串中添加Character Set=utf8mb4参数,避免驱动自动加载字符集时读取到DBNull值。修改后的连接字符串示例:
    Server=127.0.0.1; Port=3306; Database=test; Uid=user; Pwd=MyPassword; Ssl Mode=Required; convert zero datetime=True; Character Set=utf8mb4;
    
  • 检查MariaDB字符集配置:登录MariaDB执行以下命令,确认字符集相关配置无异常值,避免驱动加载字符集元数据时获取到null字段:
    SHOW VARIABLES LIKE 'character_set_%';
    SHOW VARIABLES LIKE 'collation_%';
    
  • 升级MySql.Data驱动版本:如果坚持使用原驱动,请升级到最新稳定版,确保其支持MariaDB 10.11.x的字符集特性。

内容的提问来源于stack exchange,提问作者AdamA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:40:52