Die Standardisolationsstufe für InnoDB-Tabellen ist wiederholbares Lesen. Wenn diese Isolationsstufe aktiv ist, erhalten wir folgendes Verhalten (Zitat aus:https://dev.mysql.com/doc/refman/5.5/en/set-transaction.html ):
Mit anderen Worten:Könnten Sie versuchen, den Primärschlüssel in der WHERE-Bedingung des SELECT zu verwenden? Also zum Beispiel statt:
START TRANSACTION;
SELECT * FROM productMacAddress WHERE status='free' limit 8 FOR UPDATE;
Versuchen Sie:
START TRANSACTION;
SELECT * FROM productMacAddress WHERE id=10 FOR UPDATE;
falls id der Primärschlüssel ist. Jede andere Spalte mit einem eindeutigen Index würde auch funktionieren. Wenn Sie nicht eindeutige Spalten in Ihrer WHERE-Klausel verwenden, sperrt InnoDB eine Reihe von Zeilen.