簡體   English   中英

MySQL異常 - 數據讀取期間遇到的致命錯誤

[英]MySQL Exception - Fatal Error Encountered During Data Read

我正在研究一個C#控制台程序,它從表中獲取大量記錄,通過醫學分析器運行它們,然后更新每個記錄。 它使用MySQL Connector / NET 5.2.7。 它的工作方式是我使用SQL_BUFFER_RESULT一次抓取數據塊(即20,000行)以避免鎖定。 每條記錄都通過分組器運行,然后在該記錄上完成單獨的更新查詢。 使用了兩個連接,一個讀連接和一個寫連接。

因此,當程序執行並循環讀取查詢中的記錄時,它使用result.Read()來執行此操作,其中result是MySqlDataReader。 result.Read調用是拋出異常的地方。 它是隨機發生的(不是在同一記錄或任何事情上)。 一旦在第一條記錄上遇到它,它也會在數據讀取器的每次后續讀取調用中遇到。 我嘗試過很多東西,並且搜尋其他人遇到的相關問題。 任何見解都會很棒,並隨時讓我知道我需要提供的其他信息。

在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連接器存在緩沖區大小限制。 我通過一次讀取5000條記錄解決了這個問題。

或者只是簡單地:

cmd.CommandTimeout = 99999;

我有與.NET連接器類似的問題。 錯誤可能與速度有關 - C#可能試圖以比MySQL可以跟上的速度更快地處理數據。 我最終做了兩件事來補救 - 1.在發生錯誤時(或處理大部分后)添加睡眠定時器,以便系統可以“呼吸”或2.嘗試再次閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM