c# - mysql 权限错误。涉及SELECT命令

标签 c# mysql

当我尝试单击我的应用程序(VS 2017)上使用 mysql 的按钮时,它给了我这个错误:

'SELECT command denied to user 'xx_sorci'@'xx-xx-xxx-x8.try.xx.com' for table 'proc''

奇怪的是我的表名叫做users而不是proc

这可能是个问题。此外,这还使用存储过程,因此也可以提供帮助。

Visual Studio Code :


using (MySqlConnection mysqlCon = new MySqlConnection(connectionString))

    {
Some of the code https://pastebin.com/raw/Jmcn3mfh

        mysqlCon.Open();
        MySqlDataAdapter sqlDa = new MySqlDataAdapter("BookSearchByValue", mysqlCon);
        sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
        sqlDa.SelectCommand.Parameters.AddWithValue("_SearchValue", txtSearch.Text);
        DataTable dtblBook = new DataTable();
        sqlDa.Fill(dtblBook);
        dgvBook.DataSource = dtblBook;
        dgvBook.Columns[0].Visible = false;
    }

程序:

PROCEDURE `BookSearchByValue`
    (
        _SearchValue VARCHAR(45)
    )
        BEGIN
            SELECT * FROM login
            WHERE Username LIKE CONCAT('%' +_SearchValue+'%') 
            || Password LIKE CONCAT('%' +_SearchValue+'%');
        END

编辑:将此Use procedure Bodies = false;添加到con字符串中并且它起作用了。

最佳答案

我假设您使用的是 Connector/NET(又名 MySql.Data)。 (完整的异常(exception)详细信息将对我们有所帮助;请下次包含它们: http://idownvotedbecau.se/noexceptiondetails/ 。)

这听起来像是 MySQL Bug 52294 的变体其中 Connector/NET 需要能够读取 mysql.proc 表才能执行存储过程。有两种可能的解决方案:

  1. 在连接字符串中设置CheckParameters=False。这将禁用存储过程元数据的检索(避免错误),但如果您没有完全正确地获得参数的顺序和类型,则可能会导致调用其他存储过程时出现难以调试的问题。 (Connector/NET 无法再使用元数据为您映射它们。)
  2. 切换到不存在此错误的其他 ADO.NET MySQL 库:MySqlConnectorNuGet 。它与 Connector/NET 高度兼容,执行速度更快,并修复了大量 known issues .

关于c# - mysql 权限错误。涉及SELECT命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58897161/

相关文章:

php - Mysql针对查询中的每个不同结果,运行另一个查询

c# - Autofac 与 Web Api 集成时出错

c# - 当我选择路径名时,如何从文本框中的组合框中获取选定的数据库名称

c# - .NET Uri 类查询缺少分号保留字符,简单的解决方法?

php - Mysql 更新不工作,没有 mysql 错误

mysql - SQL 注入(inject) DROP TABLE 不起作用

Mysql group by order by 性能低下

c# - 找不到文件 : Source link authentication failed

c# - 根据每个模型请求往返数据库?

mysql - 显示当今最受欢迎的商品?