MySQLexception – 数据读取期间遇到的致命错误
我正在开发一个C#控制台程序,它从表中获取大量记录,通过医学分析器运行它们,然后更新每个记录。 它使用MySQL Connector / NET 5.2.7。 它的工作方式是我使用SQL_BUFFER_RESULT一次抓取数据块(即20,000行)以避免锁定。 每条记录都通过分组器运行,然后在该记录上完成单独的更新查询。 使用了两个连接,即读连接和写连接。
因此,当程序执行并循环读取查询中的记录时,它使用result.Read()来执行此操作,其中result是MySqlDataReader。 result.Read调用是抛出exception的地方。 它是随机发生的(不是在同一记录或任何东西上)。 一旦在第一条记录上遇到它,它也会在数据读取器的每次后续读取调用中遇到。 我尝试过很多东西,并搜寻其他人有过的相关问题。 任何见解都会很棒,并随时让我知道我需要提供的其他信息。
在connection.Open()之间; 和command.ExecuteNonQuery(); 我刚添加了两行,如下所示:
connection.Open(); MySqlCommand cmd = new MySqlCommand("set net_write_timeout=99999; set net_read_timeout=99999", connection); // Setting tiimeout on mysqlServer cmd.ExecuteNonQuery(); int numOfRecordsUpdated = command.ExecuteNonQuery();
问题修正:)
我有与.NET连接器类似的问题。 错误可能与速度有关 – C#可能试图以比MySQL可以跟上的速度更快地处理数据。 我最终做了两件事来补救 – 1.在发生错误时(或处理大部分后)添加睡眠定时器,以便系统可以“呼吸”或2.尝试再次阅读。
我相信在读取大型数据集时,.NET连接器存在缓冲区大小限制。 我通过一次读取5000条记录解决了这个问题。
或者只是简单地:
cmd.CommandTimeout = 99999;
- 在反应流水线中执行TPL代码并通过测试调度程序控制执行
- 在CRM 4.0中检索单个Guid
- 什么是用于连接和声明事件的C#代码的VB.NET等价物?
- 如何在C#Web APP中获取当前的Windows登录名?
- 访问HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData
- 如何使用SelectSingleNode获取属性值?
- 使用camlQuery的Sharepoint 2010客户端对象模型 – 文件下载但没有内容/ 0字节
- 要反序列化的对象有一个C#关键字
- 将null与对象而不是具有null的对象进行比较有什么问题