一致的MySQL查询结果不一致-返回0 vs n行

时间:2019-03-08 04:26:46

标签: c# mysql

我有两个表,联赛和球队,并且正在尝试获取联赛处于某种状态的球队ID的列表。

SELECT t.TeamID 
FROM teams t 
INNER JOIN leagues l ON t.LeagueID = l.LeagueID 
WHERE t.Computer = 1 AND l.BiddingOpen = 1 AND t.Deleted = 0;

检索此代码是:

List<int> result = new List<int>();
using (MySqlConnection connection = new MySqlConnection(DAL.GetConnectionString()))
{
    if (DAL.OpenConnection(connection))
    {
        MySqlDataReader rsData = new MySqlCommand(sql, connection).ExecuteReader(System.Data.CommandBehavior.CloseConnection);
        if (rsData.HasRows)
        {
            while (rsData.Read())
            {
                result.Add(rsData.GetInt32(rsData.GetOrdinal("TeamID")));
            }
        }
        rsData.Close();
    }
}

当我在 phpMyAdmin 中运行SQL语句时,得到的预期结果是 22 行。在 DEBUG RELEASE 配置下在 debugger 中运行代码时,无论是否具有断点,都得到的预期结果> 22 。当我在另一台计算机上运行可执行文件时,我的日志显示我正在返回 0 行。

到目前为止,我已经在两个表上尝试过CHECK TABLE,在两个表上都进行了OPTIMIZE TABLE,然后将MySQL.Data.dll升级到了8.0.13.0版本(从6.0.5.0)。关于为什么我会从.EXE中获得0行,但以其他方式获得正确的行数,这有什么特别之处吗?

1 个答案:

答案 0 :(得分:0)

我怀疑我使用的主机更新了他们的MySQL版本,但我没有跟上。由于这不会产生异常,因此我也没有立即注意到它。最终,此行为可能是版本冲突和/或货币问题。

它现在可以正常工作。我做了什么:

  • 我将项目的目标框架更新为.NET 4.5.2
  • 我确保已打包MySQL.Data.dll版本8.0.13.0。
  • 我部署并测试了。

一切都按预期进行,从更正上述始终不一致的查询并确认其他一切正常的工作。