MySQL raises warning 1196 (ER_WARNING_NOT_COMPLETE_ROLLBACK) when changes to non-transactional tables cannot be undone during a ROLLBACK, leaving partial data in place.
MySQL Error 1196: ER_WARNING_NOT_COMPLETE_ROLLBACK appears when a ROLLBACK cannot revert updates made to non-transactional tables. Convert affected tables to InnoDB or avoid mixing storage engines to eliminate the warning.
ER_WARNING_NOT_COMPLETE_ROLLBACK
MySQL warning 1196 signals that a ROLLBACK statement was executed inside a transaction, but one or more modified tables used a non-transactional storage engine such as MyISAM or CSV. Because these engines do not support atomic undo, MySQL can only revert changes to transactional tables, resulting in an incomplete rollback.
The server continues processing, but your data is left in a partially committed state.
Ignoring the warning risks logical inconsistency, stale reads, and application errors that rely on transactional guarantees.
The warning surfaces during BEGIN/START TRANSACTION … ROLLBACK blocks, inside stored procedures with error handlers that issue ROLLBACK, during implicit rollbacks triggered by lock wait timeouts, and when client libraries call rollback on connection close.
It is logged to the general log and returned to clients as SQLSTATE HY000 along with code 1196, allowing applications such as Galaxy’s SQL editor to surface the issue instantly.
.
You cannot disable it safely. Fix the root cause by migrating tables to InnoDB or isolating non-transactional writes.
Yes. Data in non-transactional tables may be committed while related InnoDB changes are rolled back, breaking consistency.
Use MyISAM only for read-only reporting tables that are never updated inside transactions.
Galaxy highlights storage engines in the schema panel and flags mixed-engine statements during linting, preventing 1196 before execution.