加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MySql.Data.MySqlClient.MySqlException(0x80004005):SEL

发布时间:2020-12-15 22:51:21 所属栏目:百科 来源:网络整理
导读:我正在使用Dapper来调用 MySql存储过程.该过程执行得很好,但在此之后代码抛出异常.有问题的代码块是这样的: using (var conn = DataFactory.InitializeConnection(false)) { conn.Query("ProcedureName",new { puserid = ID },commandType: System.Data.Com
我正在使用Dapper来调用 MySql存储过程.该过程执行得很好,但在此之后代码抛出异常.有问题的代码块是这样的:

using (var conn = DataFactory.InitializeConnection(false))
    {
        conn.Query("ProcedureName",new
        {
            puserid = ID
        },commandType: System.Data.CommandType.StoredProcedure);
    }

DataFactory是以下静态类:

public static class DataFactory
{
    public static IDbConnection InitializeConnection(bool open = true,string connectionstring = "",string databaseServerType = "MYSQL")
    {
        if (string.Equals(databaseServerType,"MYSQL"))
        {
            if (string.IsNullOrEmpty(connectionstring))
                connectionstring = Settings.Default.DataConnectionString;
            var csb = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder(connectionstring);
            var conn = new MySql.Data.MySqlClient.MySqlConnection(csb.ConnectionString);
            Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

            if (open)
                conn.Open();
            return conn;
        }
        throw new NotImplementedException("Not implemented for your database provider");
    }
}

我的数据库中没有bogus_table,它显示在错误消息中:

MySql.Data.MySqlClient.MySqlException (0x80004005): SELECT command
denied to user ‘XXX’@’YYY’ for table ‘bogus_table’ at
MySql.Data.MySqlClient.MySqlStream.ReadPacket() at
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow,
Int64& insertedId) at
MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId,Boolean
force) at MySql.Data.MySqlClient.MySqlDataReader.NextResult() at
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior
behavior) at MySql.Data.MySqlClient.MySqlDataReader.ClearKillFlag()
at MySql.Data.MySqlClient.MySqlDataReader.Close() at
MySql.Data.MySqlClient.MySqlDataReader.Dispose(Boolean disposing)
at MySql.Data.MySqlClient.MySqlDataReader.Dispose() at
Dapper.SqlMapper.d__1361.<>m__Finally1() at
Dapper.SqlMapper.<QueryImpl>d__136
1.MoveNext()

解决方法

这可能是 Mysql Driver实施中的问题;这里是提到 bogus_table的代码块.
如果你的过程有空结果,尝试用Execute调用(因为它实现了内部执行非查询)而不是Query.

using (var conn = DataFactory.InitializeConnection(false))
    {
        conn.Execute("ProcedureName",commandType: System.Data.CommandType.StoredProcedure);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读