Es probable que se haya topado con este error en MySQL Connector/NET .
Qué desencadena este error:
- Llamadas de código para la ejecución de la consulta A
- Se inicia la transacción 1 para la consulta A
- La consulta A se ejecuta y provoca un error en MySQL
- La transacción 1 NO se revierte
- Llamadas de código para la ejecución de la consulta B
- Se inicia la transacción 2 para la consulta B
- MySQL Connector/NET lanza la excepción
El error es el punto 4:la transacción 1 se deja abierta después de un error (o al menos el conector todavía está convencido de que se deja abierto). Debido a la agrupación de conexiones, el código que solicita la consulta A y la consulta B puede no estar relacionado en absoluto. Además, si el tiempo entre los puntos 4 y 5 es lo suficientemente largo, la transacción es revertido, de ahí la rareza y la aleatoriedad.
Desafortunadamente, MySQL aún no ha solucionado el problema. La única solución alternativa que conozco es descargar el código fuente de Connector/NET y arreglarlo/construirlo usted mismo.