I’m using Django with MySQL and South, and everything’s just dandy…until something goes wrong with a migration. Then I get an error which often damages or destroys my database, and along the line gives me:
! Since you have a database that does not support running
! schema-altering statements in transactions, we have had
! to leave it in an interim state between migrations.
All of my database tables are InnoDB, which as far as I know supports transactions. What do I have to do to get South to use transactions with its migrations?
The point of the error message is that MySQL doesn’t support transactions when you’re altering schemas. MySQL only supports transactions when you’re creating/updating/selecting data. Read carefully what is written about MySQL under Database-Specific Issues section on South website.
If you do want to use model migrations you can switch to PostgreSQL which will be completely transparent to you with Django. The only changes are to the settings.py database section (and the PostgreSQL installation of course).