In meiner Client-Anwendung habe ich eine Methode wie diese (in der Praxis ist es komplexer, aber ich habe den wichtigsten Teil gelassen):
public void btnUpdate_Click(...)
{
...
dataAdapter.Update(...);
...
dataAdapter.Fill(...); // here I got exception one time
}
Die Ausnahme, die ich in den Protokollen gefunden habe, lautet "Deadlock found when trying to get lock; try restarting transaction". Ich traf diese Ausnahme nur einmal, also wurde sie nicht wiederholt.
So wie ich es verstehe, führt die Methode DataAdapter.Fill() nur die Select-Abfrage aus. Ich mache keine explizite Transaktion und habe autocommit aktiviert.
Also, wie kann ich tote Sperre auf eine einfache Abfrage auswählen, die nicht ein Teil der größeren Transaktion ist?
So wie ich es verstehe, sollten zwei Transaktionen aufeinander warten, um einen Deadlock zu erhalten. Wie ist das mit einem einzelnen Select möglich, der nicht innerhalb einer Transaktion stattfindet? Vielleicht ist es ein Fehler in MySql?
Ich danke Ihnen im Voraus.