Is MySQL InnoDB a transaction safe storage engine for using Django migrations?

Based on below statement in Django documentation using MySQL is not transaction-safe and may cause problem

MySQL lacks support for transactions around schema alteration operations, meaning that if a migration fails to apply you will have to manually unpick the changes in order to try again (it’s impossible to roll back to an earlier point)..)

however we know that InnoDB storage engine is transaction-safe. see below comment from Oreilly

InnoDB is the most popular transaction-safe MySQL storage engine. It supports ACID transactions as well as row-level locking and multiversion concurrency.

I’m confused on this case. anyone faced this problem?

When in doubt, always refer to the official docs.

Schema operations cannot be rolled back, there is no conflict between those two statements. See https://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html
Also see https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html

1 Like