Du har förmodligen stött på det här felet i MySQL Connector/NET .
Vad utlöser detta fel:
- Kodanrop för exekvering av fråga A
- Transaktion 1 för fråga A har startat
- Fråga A exekveras och orsakar ett fel i MySQL
- Transaktion 1 återställs INTE
- Kodanrop för exekvering av fråga B
- Transaktion 2 för fråga B har startat
- MySQL Connector/NET skapar undantaget
Felet är punkt 4:transaktion 1 lämnas öppen efter ett fel (eller åtminstone är kontakten fortfarande övertygad om att den lämnas öppen). På grund av anslutningspoolning kan koden som anropar fråga A och fråga B vara helt orelaterade. Dessutom, om tiden mellan punkt 4 och 5 är tillräckligt lång, är transaktionen rullade tillbaka, därav sällsyntheten och slumpen.
Tyvärr finns det ingen fix av MySQL ännu. Den enda lösningen jag känner till är att ladda ner källkoden för Connector/NET och fixa/bygga den själv.