MySQL: command.executeReader() returnerer null
Hej Eksperten.Jeg har et meget underligt spørgsmål som jeg simpelthen ikke kan finde svar på. Egentlig synes jeg det burde være let, men jeg får en fejl der ikke giver mening.
Følgende kode bliver kørt:
MySqlCommand offsetCommand = connection.CreateCommand();
offsetCommand.CommandText = "SELECT FLOOR(RAND() * COUNT(*)) AS 'offset' FROM urls WHERE lastcrawled is NULL AND tld = 'dk' AND localpath = '';";
MySqlDataReader offsetReader = offsetCommand.ExecuteReader();
if (!offsetReader.Read()) <--- NullReferenceException her
throw new Exception("There should be a result here!");
Jeg er 100% på at der er en forbindelse og at min query genererer output. Det underlige er at denne fejl kun sker sjældent.
Ofte kører mit program igennem denne stump af kode 50-100 gange før fejlen sker.
Forbindelsen bliver brugt mange gange. Det er ikke en forbindelse jeg åbner for hver command jeg skal køre.
Jeg har fundet følgende som skulle løse problemet
( http://www.dotnet247.com/247reference/msgs/22/114651.aspx )
GC.Collect();
GC.WaitForPendingFinalizers();
Begrundelsen er at der skulle være en fejl i .NET's måde at allokere hukommelse - Ingen annelse om det er rigtigt, men det virker i hvert fald ikke.
Jeg synes fejlen er utrolig underlig, det burde jo bare virke!
Er der nogen der ved hvad jeg skal gøre?