尝试打开MySQL连接时可能导致KeyNotFoundException的原因

时间:2019-04-01 07:09:53

标签: c# mysql sql

我试图使用C#代码连接数据库,但是当调试器进入MySqlConnection Open方法时出现KeyNotFoundException。

我尝试将connectionString更改为另一个模板,重新启动SQL Server,并手动验证我的服务器详细信息(用户名,密码ETC ...)

//setting my connection data
private void Initialize() {
    server = "127.0.0.1";
    database = "database";
    uid = "root";
    password = "123456";
    String connectionString;
    connectionString = "SERVER=" + server + ";" + "DATABASE=" +
    database + ";" + "Uid=" + uid + ";" + "PWd=" + password + ";";
    connection = new MySqlConnection(connectionString);
}


//Opening the connection
private bool OpenConnection() {
    try {
        connection.Open();//This is where I get my Exception
        return true;
    }
}

除了连接,我遇到了下一个异常:

  

System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键。   在System.Collections.Generic.Dictionary`2.get_Item(TKey键)处   在MySql.Data.MySqlClient.CharSetMap.GetCharacterSet(DBVersion版本,字符串CharSetName)   在MySql.Data.MySqlClient.CharSetMap.GetEncoding(DBVersion版本,字符串CharSetName)   在MySql.Data.MySqlClient.Driver.Configure(MySqlConnection连接)   在MySql.Data.MySqlClient.MySqlConnection.Open()   在d:\ Users \ moshe \ Documents \ Visual Studio 2015 \ Projects \ sqlTesting \ sqlTesting \ DBConnect.cs:line 40中的sqlTesting.DBConnect.OpenConnection()中


1 个答案:

答案 0 :(得分:1)

您应该尝试删除collation-server设置下Options标签中的General设置,然后重新启动MySQL服务器以解决此问题。

OR

您可以简单地将charset添加到连接字符串:

Server=127.0.0.1;Port=3306;Database=database;User ID=root;Password=123456;CharSet=utf8;

OR

如果您的框架是.NET,那么您要做的就是确保您的'MySql.Data.dll'与相应的版本保持最新。