MySql.Data.MySqlClient.MySqlException (0x80004005): comando SELECT denegado al usuario 'XXX' @ 'YYY' para la tabla 'bogus_table'

c# dapper mysql

Pregunta

Estoy usando Dapper para llamar al procedimiento almacenado de MySql. El procedimiento se ejecuta bien, pero luego el código arroja una excepción. El bloque de código que es problemático es así:

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

Donde DataFactory es la siguiente clase estática:

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");
    }
}

No tengo bogus_table en mi base de datos, aunque se muestra en el mensaje de error:

MySql.Data.MySqlClient.MySqlException (0x80004005): comando SELECT denegado al usuario 'XXX' @ 'YYY' para la tabla 'bogus_table' en MySql.Data.MySqlClient.MySqlStream.ReadPacket () en MySql.Data.MySqlClient.NativeDriver.GetResult (Int32 & affectedRow, Int64 & insertedId) en MySql.Data.MySqlClient.Driver.NextResult (Int32 statementId, Boolean force) en MySql.Data.MySqlClient.MySqlDataReader.NextResult () en MySql.Data.MySqlClient.MySqlCommand.ExecuteReader (comportamiento CommandBehavior) en MySql.Data.MySqlClient.MySqlDataReader.ClearKillFlag () en MySql.Data.MySqlClient.MySqlDataReader.Close () en MySql.Data.MySqlClient.MySqlDataReader.Dispose (Boolean disposing)
en MySql.Data.MySqlClient.MySqlDataReader.Dispose () en Dapper.SqlMapper.d__136 1.<>m__Finally1() at Dapper.SqlMapper.<QueryImpl>d__136 1.MoveNext ()

Respuesta aceptada

es tal vez un problema en la implementación de Mysql Driver ; aquí está el bloque de código que menciona bogus_table . si su procedimiento tiene un resultado vacío intente llamar con Ejecutar (porque implementa ejecutar no consulta adentro) en lugar de Consulta.

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué