MemSQL:错误1049-执行过程时

时间:2018-10-01 20:22:10

标签: c# memsql

我正在学习MemSQL,为此,我试图从C#客户端代码执行一个过程。该存储过程存在于MemSQL数据库中。但是,我收到错误“发生错误1049:未知数据库'mysql'”。 此问题仅适用于过程,如果我从C#客户端执行简单查询,则效果很好。

我正在使用MySql.Data.MySqlClient .Net核心类库6.8.8。

1 个答案:

答案 0 :(得分:1)

尝试将连接选项CheckParameters设置为false。

.NET MySQL驱动程序尝试查询mysql数据库以获取有关存储过程的参数的信息,这不适用于MemSQL。

来自https://dev.mysql.com/doc/connector-net/en/connector-net-programming-stored.html

  

当您调用存储过程(在MySQL 8.0发行系列之前的版本中)时,命令对象将进行附加的SELECT调用以确定存储过程的参数。您必须确保调用该过程的用户对mysql.proc表具有SELECT特权,以使他们能够验证参数。否则,调用该过程将导致错误。

这是默认行为,但可以使用连接选项进行更改:

来自https://dev.mysql.com/doc/connector-net/en/connector-net-6-10-connection-options.html

  

CheckParameters,检查参数

     

默认值:true

     

指示是否应对照   服务器。

以及较旧版本的客户端的此选项:

  

UseProcedureBodies,Use Procedure Bodies,过程主体

     

默认值:true

     

设置为true时,默认值Connector / NET要求使用主体   可见的程序。这使它能够确定   参数类型和顺序。用户设置为false   连接到数据库不具有SELECT特权   mysql.proc(存储过程)表或无法查看   INFORMATION_SCHEMA.ROUTINES,然后显式设置所有类型   调用之前的参数,并将参数添加到命令中   按照它们在过程定义中出现的顺序。

     

此选项在Connector / NET 6.3.7中已弃用,并在   连接器/ NET 6.10.4;请使用“检查参数”选项。