후 나는 그것이MySQL의 연결은 풀 ThreadAbortedException
I (2 년 동안 완벽하게 실행)이 코드에 전에 이런 일이 없었는데 이상한 문제가 발생했습니다 단순화하기 위해 코드를 업데이트 유출.
MVC 응용 프로그램을 여러 IIS에서 실행 중이고 C# 코드를 통해 MySQL을 사용하고 있습니다.
쿼리 테이블 X는 동일한 스키마의 다른 테이블에서 응답을받습니다.
일부 IIS에서 문제가 산발적으로 발생하고 (1-4 일) 3 iisreset으로 해결됩니다.
using (var conn = new MySqlConnection(connectionString))
{
var command = conn.CreateCommand();
command.CommandText = sql;
IDataReader reader;
try
{
reader = command.ExecuteReader();
}
catch (Exception ex)
{
throw new MoranbernateQueryException(sql, ex);
}
using (reader)
{
while (reader.Read())
{
Console.WriteLine(sql, GetTableFromReader(reader));
}
}
}
}
private static string GetTableFromReader(IDataReader reader)
{
var schema = reader.GetSchemaTable();
var rows = schema?.Rows;
if (rows != null && schema.Columns.Count > 11)
{
return rows[0][10].ToString();
}
}
이 코드의 결과는 독자 스키마에서 테이블 A에 대한 SQL 쿼리하지만 테이블 (데이터가) B입니다 : 여기
내가 사용하고 코드 ( 업데이트)입니다 두 테이블 모두 동일한 DB 및 스키마에 있습니다.다른 누구도이 유형의 문제가 발생 했습니까? 조사에 대한 이론이나 제안을 듣고 싶습니다.
명령은 MySqlConnection의 인스턴스 지금은 모두가 잘 드라이버를 업데이트 한 후, MySQL의 팀에 의해 고정 알려진 문제? – Steve
@GSerg - 사용 블록이 완료되면 판독기가 폐기됩니다. 그러나 이것이 내재하고 어떻게 호출되는지에 대한 선언을 보는 것이 가치가 있습니다. – Paddy
나는 @Tom과 함께 작업하며 문제에 대해 업데이트하고 싶습니다. 일부 기능 (제거됨)으로 인해 긴 프로세스를 실행했지만 'ThreadAbortedException'을 던져 버렸습니다. 따라서'MySql'에서 데이터를 읽는 동안 try catch가 발생하지 않습니다. 결론은 연결 풀이 동기화되지 않았고 연결 유출이 발생했기 때문입니다. 이제이 드라이버가 MySql 드라이버 문제인지 이해하려고합니다. 이견있는 사람 ? – guyl