为什么在 C# .Net Core 3 中连接到 MySql 时出现错误

Luk*_*POS 2 c# mysql .net-core

我刚刚从 MySql.Data.MySqlClient .Net Core Class Library 版本 8.0.21 更新到 8.0.22,它似乎导致了我的一些 SQL 查询错误。我没有收到以下错误:

“需要非负数。(参数'count')”

当我尝试运行以下代码时:

DataTable dt = new DataTable();
try {
    using (MySqlConnection con = new MySqlConnection(ConnectionString)) {
        using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM shortcuts WHERE user = @id", con)) {
            da.SelectCommand.Parameters.AddWithValue("@id", userId);
            da.Fill(dt);
        }
    }
} catch (Exception ex) {
    Console.WriteLine(ex.Message);
    dt = null;
}
Run Code Online (Sandbox Code Playgroud)

我看不到错误在抱怨什么,我试图从中检索数据的“快捷方式”表中只有 8 条记录。由于我没有更改任何代码并且在我更新 NuGet 包之前它正在工作,我假设这是最新版本的问题。但是,我确实尝试降级回我使用的版本,但没有运气。

我不知道这是否是报告错误或获取信息的正确位置,但我将不胜感激。以下是我尝试过的一些事情:

  • 降级回 8.0.21 版
  • 重新启动 MySql 服务(目前我正在使用 XAMPP 和我的本地机器)
  • 添加“da.SelectCommand.Parameters.Clear();” 在代码的顶部,以确保没有参数从以前的查询中卡住,因为它适用于其他查询,但不适用于这个查询。

感谢您提供的任何帮助

Bra*_*ger 5

您是否正在查询具有CHAR(36)包含NULLs的列(即 GUID)的表?如果是这样,您将遇到错误 101252,这是 MySql.Data 8.0.22 中引入的回归(直到 8.0.24 才会修复,可能在 2021 年 4 月下旬)。

您可以回滚到 8.0.21,但我个人建议切换到MySqlConnector(免责声明:我是主要贡献者),因为它与 .NET Core 具有更好的兼容性并修复了MySql.Data 中存在的许多错误