我有两个表,联赛和球队,我正在尝试获取联赛处于特定状态的球队 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 配置中,我得到了预期的结果 22。当我在另一台机器 上运行可执行文件时,我的日志显示我返回了 0 行。
到目前为止,我已经在两个表上尝试了 CHECK TABLE,在两个表上都尝试了 OPTIMIZE TABLE,并将我的 MySQL.Data.dll 升级到版本 8.0.13.0(从 6.0.5.0)。关于为什么我会从 .EXE 中获得 0 行但其他方式获得正确的行数,有什么突出的地方吗?
最佳答案
我怀疑我使用的主机更新了他们的 MySQL 版本,而我没有跟上。由于这没有产生异常,所以我也没有立即注意到它。最终,此行为可能是版本冲突和/或货币问题。
它现在工作正常。我做了什么:
- 我将项目的目标框架更新为 .NET 4.5.2
- 我确保打包了 MySQL.Data.dll 版本 8.0.13.0。
- 我部署并测试了。
一切都按预期进行,从更正上面提到的始终不一致的查询到确认其他一切已经正常工作。
关于c# - 始终不一致的 MySQL 查询结果 - 返回 0 行与 n 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55056719/