Nie wiem w czym to piszesz więc trudno mi doradzić: czasem to możę być wina- dostępności DDL - dotyczących bazy
spróbuj przed transakcją: wymusić aby autocommit nie zaszedł ( powinno to być automatycznie zrobione z racji użycia start transaction, jednak zależnie od " tym w jaki sposób pracujesz z bazą danych " czasem to nie działa
SET autocommit=0;