Malheureusement, vous devez nettoyer manuellement les migrations ayant échoué pour MySQL. MySQL ne prend pas en charge les modifications de définition de base de données transactionnelle.
Rails 2.2 inclut des migrations transactionnelles pour PostgreSQL. Rails 2.3 inclut des migrations transactionnelles pour SQLite.
Cela ne vous aide pas vraiment pour votre problème pour le moment, mais si vous avez le choix de base de données sur de futurs projets, je vous recommande d'en utiliser une avec le support du DDL transactionnel car cela rend les migrations beaucoup plus agréables.
Mise à jour - c'est toujours vrai en 2017, sur Rails 4.2.7 et MySQL 5.7, rapporté par Alejandro Babio dans une autre réponse ici.