【问题标题】:MySql.Data.MySqlClient.MySqlException (0x80004005): SELECT command denied to user 'XXX'@'YYY' for table 'bogus_table'MySql.Data.MySqlClient.MySqlException (0x80004005): SELECT 命令拒绝用户 'XXX'@'YYY' 用于表 'bogus_table'
【发布时间】:2018-10-28 15:52:49
【问题描述】:

我正在使用 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 命令 拒绝用户 'XXX'@'YYY' 访问表 'bogus_table' MySql.Data.MySqlClient.MySqlStream.ReadPacket() 在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& 影响行, Int64& 插入 ID)在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean 力)在 MySql.Data.MySqlClient.MySqlDataReader.NextResult() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为)在 MySql.Data.MySqlClient.MySqlDataReader.ClearKillFlag() 在 MySql.Data.MySqlClient.MySqlDataReader.Close() 在 MySql.Data.MySqlClient.MySqlDataReader.Dispose(布尔处理)
在 MySql.Data.MySqlClient.MySqlDataReader.Dispose() 在 Dapper.SqlMapper.d__1361.<>m__Finally1() at Dapper.SqlMapper.<QueryImpl>d__1361.MoveNext()

【问题讨论】:

    标签: c# mysql dapper


    【解决方案1】:

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

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

    【讨论】:

    • 嗯..谢谢,我会尽快重新检查。
    • 工作正常.. 再次感谢您!
    猜你喜欢
    • 2016-12-03
    • 2017-12-25
    • 2013-08-07
    • 1970-01-01
    • 2013-06-26
    • 2013-08-27
    • 2019-11-07
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多