【问题标题】:Mysql connector - MultipleActiveResultSets issueMysql 连接器 - MultipleActiveResultSets 问题
【发布时间】:2014-11-15 04:59:24
【问题描述】:

首先,我花了好几个小时来寻找解决办法——也许我只是需要另一双眼睛来解决这个问题。

我目前正在为自己编写一个 c# 应用程序(个人使用)。我正在运行来自 mysql.com 的最新 MySQL 连接器库

我的连接字符串是

public string SQLConnection = "Server=localhost;Database=data;Uid=root;Pwd=ascent;charset=utf8;MultipleActiveResultSets=True;";

我的问题是关于 MultipleActiveResultSets=True; 。当这包含在我的 SQLConnection 字符串中时,MySQL 库无法连接。查看下面的图片以查看我的发现

完整图片:http://i62.tinypic.com/25a57p1.png

MultipleActiveResultSets=True; 从连接字符串中删除时,我得到了这个结果

完整图片:http://i58.tinypic.com/2useaom.png

我获得了成功的连接。

MultipleActiveResultSets 的原因是因为我同时使用了 2 个MySqlDataReader - 但是这无法更改。

如果有人知道为什么会失败,请提出您的修复建议。

我的本​​地 MySQL 服务器版本:5.6.17

【问题讨论】:

  • 将要创建连接的行放在 try 块内。那就是它似乎下降的地方,所以你想捕捉抛出的异常。这可能会告诉你出了什么问题。

标签: c# mysql connect connector


【解决方案1】:

问题没有解决,但我找到了解决方法。

我从连接字符串中删除了MultipleActiveResultSets=True;。然后我创建了一个列表,在其中保存了 MySqlDataReader 中的数据,然后我关闭了阅读器并重新打开了一个新的阅读器,然后我从数据库中获取了其余数据。然后简单地将结果合并到列表中。

是的,临时修复。

如果有人知道正确的修复方法,请发表评论,否则我将使用我的临时修复方法。

谢谢大家。

【讨论】:

    【解决方案2】:

    我假设 MySql 连接器不支持 MARS(多个活动结果集)。在这种情况下,您不能同时在多个地方使用它。

    【讨论】:

    • 上周我刚刚了解了 MySQL 有线协议,我可以确认这是正确的; MySQL 将无法支持多个活动结果集。您需要将数据缓冲到列表中,然后执行另一个查询或打开第二个连接。
    • "mars is not available in MySQL" 我在MySql论坛forums.mysql.com/read.php?38,65931,260092找到了证据
    【解决方案3】:

    另外一个选项可能会导致一点性能损失,但可以用作快速修复,即为第二个读取器打开另一个到数据库的连接,并在完成后关闭它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2011-11-14
      • 2010-12-18
      • 2011-07-24
      • 1970-01-01
      • 2010-09-23
      • 2011-02-16
      相关资源
      最近更新 更多