0

我在 IIS/Windows 上使用 MySql.Data 版本 8.0.22 来尝试连接到 MariaDB 10.4.12 (Linux)。我正在尝试使用 MySqlCommandBuilder.DeriveParameters 来获取参数信息:

        cmd.CommandText = "Mail_SaveEvent";
        cmd.CommandType = CommandType.StoredProcedure;
        MySqlCommandBuilder.DeriveParameters(cmd);

我存储的过程/例程具有以下参数:

CREATE PROCEDURE shopmail_test.Mail_SaveEvent(
    IN inEventTypeID int,
    IN inEventDate datetime,
    IN inEventServer int,
    IN inEventTitle varchar(250),
    IN inEventText text,
    IN inEventMerchantID int,
    IN inEventAuditText text,
    IN inEventID int)
  SQL SECURITY INVOKER
  MODIFIES SQL DATA
BEGIN

我认为这可能是一个排序规则问题(我使用 utf8 和 utf8_unicode_ci 排序规则),所以我注释掉了所有文本参数,甚至从例程主体中删除了大部分逻辑,但我仍然收到以下错误:

12/4/2020 11:20 AM][Production  ]:          Specified cast is not valid.
[12/4/2020 11:20 AM][Production  ]:            at MySql.Data.MySqlClient.MySqlCommandBuilder.DeriveParameters(MySqlCommand command)

有趣的是,如果我尝试在 Windows 机器上托管的 MariaDB 10.4.17 上点击相同的模式/例程,则该命令将被填充而没有任何错误。

在此处输入图像描述

这让我发疯!有没有人经历过这个并发现如何解决它?

4

1 回答 1

1

这可能是 MySql.Data 中的一个错误(尽管我还没有在https://bugs.mysql.com/上看到相关报告)。你可以在那里报告它,并希望 Oracle 在未来的版本中修复它。

或者,切换到MySqlConnector(免责声明:主要作者),它修复了许多 MySql.Data 错误并且与 MariaDB 具有很好的兼容性。

于 2020-12-05T16:04:48.530 回答