.Net MySql错误“字典中不存在给定的键" [英] .Net MySql error "The given key was not present in the dictionary"

查看:468
本文介绍了.Net MySql错误“字典中不存在给定的键"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试从表中获取简单计数会导致异常情况. 尝试了不同的选择状态,这也会导致异常:"SELECT * FROM goods",但"SELECT col1, col2 FROM goods"-毫无例外.我究竟做错了什么?从工作台中选择这些作品.

Trying to get simple count from table results in exception bellow. Tried different select statemens which also makes exception: "SELECT * FROM goods", but "SELECT col1, col2 FROM goods" - works without exception. What am I doing wrong? From workbench these selects works.

字典中不存在给定的键. System.Collections.Generic.KeyNotFoundException:给定的密钥不是 出现在字典中.在 System.Collections.Generic.Dictionary`2.get_Item(TKey键)位于 MySql.Data.MySqlClient.MySqlField.SetFieldEncoding()在 MySql.Data.MySqlClient.NativeDriver.GetColumnData(MySqlField字段)
在MySql.Data.MySqlClient.NativeDriver.GetColumnsData(MySqlField [] 列)位于MySql.Data.MySqlClient.Driver.GetColumns(Int32 count)
在MySql.Data.MySqlClient.ResultSet.LoadColumns(Int32 numCols)在 MySql.Data.MySqlClient.ResultSet..ctor(驱动程序d,Int32 statementId, MySql.Data.MySqlClient.Driver.NextResult(Int32上的Int32 numCols) statementId,布尔值),位于 MySql.Data.MySqlClient.MySqlDataReader.NextResult()在 MySql.Data.MySqlClient.MySqlDataReader.Close()在 MySql.Data.MySqlClient.MySqlCommand.ResetReader()在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为)位于MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
在MySqlSybaseComparer.DbTester.Test(String& error)中 c:\ MySqlSybaseComparer \ DbTester.cs:第68行

The given key was not present in the dictionary. System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at MySql.Data.MySqlClient.MySqlField.SetFieldEncoding() at MySql.Data.MySqlClient.NativeDriver.GetColumnData(MySqlField field)
at MySql.Data.MySqlClient.NativeDriver.GetColumnsData(MySqlField[] columns) at MySql.Data.MySqlClient.Driver.GetColumns(Int32 count)
at MySql.Data.MySqlClient.ResultSet.LoadColumns(Int32 numCols) at MySql.Data.MySqlClient.ResultSet..ctor(Driver d, Int32 statementId, Int32 numCols) at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) at MySql.Data.MySqlClient.MySqlDataReader.NextResult() at MySql.Data.MySqlClient.MySqlDataReader.Close() at MySql.Data.MySqlClient.MySqlCommand.ResetReader() at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
at MySqlSybaseComparer.DbTester.Test(String& error) in c:\MySqlSybaseComparer\DbTester.cs:line 68

代码段:

using (MySqlConnection conn = new MySqlConnection(ConStrMySql))
{
    try
    {
        conn.Open();
        using (MySqlCommand cmd = new MySqlCommand("SELECT count(*) FROM goods", conn))
        {
            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                    MessageBox.Show(reader[0].ToString());
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message + Environment.NewLine + ex.ToString(););
    }
    conn.Close();
}

与数据库的连接字符串:Server=localhost; Database=art; Uid=ramunas; Pwd=xxxx; AllowUserVariables=True;

Connection string to DB: Server=localhost; Database=art; Uid=ramunas; Pwd=xxxx; AllowUserVariables=True;

推荐答案

代码正确,所有建议也应有效.只需删除排序规则服务器"设置并重新启动服务器,一切都会按预期进行.

Code is correct and all suggestion also should work. Just removed "collation-server" settings and restarted server and everything works as expected.

这篇关于.Net MySql错误“字典中不存在给定的键"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆