1196
MariaDBWARNINGNotableTransactionHIGH confidence
Non-transactional tables could not be rolled back
Production Risk
High — partial rollback leaves MyISAM changes in place, causing data inconsistency.
What this means
ER_WARNING_NOT_COMPLETE_ROLLBACK (1196, SQLSTATE HY000) is a warning issued when a ROLLBACK is executed but some tables modified in the transaction use non-transactional storage engines (e.g., MyISAM) and cannot be rolled back.
Why it happens
- 1Modifying a MyISAM table inside a transaction and then rolling back
- 2Mixed-engine transactions where both InnoDB and MyISAM tables are updated
How to reproduce
trigger — this will error
trigger — this will error
START TRANSACTION; INSERT INTO innodb_table VALUES (1); INSERT INTO myisam_table VALUES (1); -- non-transactional ROLLBACK; -- MyISAM change cannot be undone
expected output
Warning (Code 1196): Some non-transactional changed tables couldn't be rolled back
Fix
Migrate non-transactional tables to InnoDB
Migrate non-transactional tables to InnoDB
ALTER TABLE myisam_table ENGINE = InnoDB;
Why this works
InnoDB supports full ACID transactions including rollback, eliminating this warning.
Sources
Official documentation ↗
MySQL 8.0 — 1196 ER_WARNING_NOT_COMPLETE_ROLLBACK
Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev