Skip to content

Symptom triage ​

For MySQL 8.4 InnoDB, these symptoms suggest investigations, not unique diagnoses. The linked schedules reproduce selected mechanisms under their stated configuration. Confirm the cause before changing isolation, ending a connection, or retrying work.

SymptomFirst checkPossible mechanismScoped response
Updates wait, then finishWaiter/blocker viewsRow-lock waitsShorten the holding transaction; end it only after checking rollback and client effects
Errno 1205Row-lock views and metadata-lock stateRow-lock timeout or metadata timeoutFor whole-operation retry, ROLLBACK first; check innodb_rollback_on_timeout
Errno 1213Deadlock reports and counterOpposite order or another lock cycleRetry the rolled-back transaction within a safe application boundary; investigate actual locks
INSERT waits without a duplicate rowdata_locks and wait edgesGap/range locksNarrow locking reads; READ COMMITTED changes range protection and retains constraint-related gap locks
Wrong numbers with successful commitsAnomaly catalog and application invariantsLost updates or write skewSelect a repair for the actual rule; single-row repairs alone do not protect every cross-row invariant
Storage growthHistory health and workloadRetained undo, insufficient purge capacity, or other storage growthInvestigate retaining views and purge; this metric does not measure disk bytes
DDL waits and later queries queueprocesslist and metadata-lock stateMetadata-lock queueBound metadata acquisition with lock_wait_timeout; investigate holders

The InnoDB error-handling manual states: "A transaction deadlock causes InnoDB to roll back the entire transaction." For an InnoDB row-lock timeout, statement-only rollback is the default, innodb_rollback_on_timeout=OFF; ON requests transaction rollback. The timeout schedule asserts the OFF case. Do not infer identical rollback scope from identical error numbers in different operations.

Successful commits do not establish a valid application invariant. Concurrency counters can expose waits and purge history; they do not detect the business-rule violations shown in the anomaly catalog. Application checks and coordinated writer protocols are separate work.

Further reading ​

MIT Licensed · Every transcript on this site was generated by a real database run against MySQL 8.4.11 and PostgreSQL 18.6 at 8fa27b8; shared YAML has an independent psycopg/PyMySQL check.