V MySQL nefunguje v tranzakcii rollback

mysql-rollback

Dnes som niekoľko hodín strávil trhaním si vlasov :), gúglením, testovaním a zisťovaním prečo mi v jednom VBS skripte v tranzakcii pri práci s MySQL databázou nefunguje rollback.

Otestoval som všetko možné aj nemožné, aj tak sa pri výskyte chyby v skripte všetky zmeny do databázy zapísali, aj keď boli obalené v tranzakcii a mali byť rollbacknuté, teda sa do databázy zapísať v žiadnom prípade nemali.Keď som si už vytrhal takmer všetky vlasy :) sa mi podarilo vygúgliť, že v tranzakcii sa nesmú nachádzať žiadne DDL príkazy (create table, drop table, truncate table…). Tieto sa totiž nedajú rollbacknúť, takže MySQL pred ich vykonaním spraví commit. V mojom skripte som tam ale mal zahrnuté príkazy create temporary tabletruncate table. Keď som dal oba mimo tranzakcie, zrazu začalo všetko fungovať. Tak sa mi aspoň pár vlasov predsa len podarilo zachrániť :)

Stránka, ktorá ma zachránila: http://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Scroll to Top