我有一个用MySql (MariaDB 5.5.5-10.11.0)编写的用c#编写的简单连接字符串:
MySqlConnection Database = new MySqlConnection("Server=127.0.0.1; Port=3306; Database=test; Uid=user; Pwd=MyPassword; Ssl Mode=Required; convert zero datetime=True;");
在两台计算机(Windows 10和Windows 11)上,一切正常工作。但是,当我试图在Windows 2022上启动这个应用程序时,我会得到以下错误:
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()
在Database.Open()上抛出错误;
MariaDB已安装并运行,Ssl正在工作,用户的p发射器被授予,端口是正确的。有什么想法吗?
整个程序:
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();
}
}
}
发布于 2022-12-03 22:12:12
这是由于MariaDB 10.10.1使ID字段在Information_Schema.Collations中为Nullable,并添加了一组对ID为null的排序规则。
https://jira.mariadb.org/browse/MDEV-27009
一个可能的解决办法是使用MariaDB 10.9或更高版本。
https://stackoverflow.com/questions/74060289
复制相似问题