Prawdopodobnie napotkałeś ten błąd w MySQL Connector/NET .
Co powoduje ten błąd:
- Kod wzywa do wykonania zapytania A
- Rozpoczęto transakcję 1 dla zapytania A
- Zapytanie A jest wykonywane i powoduje błąd w MySQL
- Transakcja 1 NIE jest cofana
- Kod wywołuje wykonanie zapytania B
- Rozpoczęto transakcję 2 dla zapytania B
- MySQL Connector/NET zgłasza wyjątek
Błąd jest w punkcie 4:transakcja 1 pozostaje otwarta po błędzie (lub przynajmniej łącznik jest nadal przekonany, że jest otwarty). Z powodu puli połączeń kod wywołujący zapytanie A i zapytanie B może być całkowicie niepowiązany. Ponadto, jeśli czas między punktem 4 a 5 jest wystarczająco długi, transakcja jest wycofane, stąd rzadkość i losowość.
Niestety, MySQL nie ma jeszcze poprawki. Jedyne obejście, jakie znam, to pobranie kodu źródłowego Connector/NET i samodzielne naprawianie/budowanie go.