不幸的是,您必须手动清理失败的MySQL迁移。MySQL不支持事务数据库定义更改。
Rails 2.2包括针对PostgreSQL的事务迁移。Rails 2.3包括SQLite的事务迁移。
这现在并不能真正解决您的问题,但是,如果您可以在将来的项目中选择数据库,我建议您使用支持事务性DDL的数据库,因为它使迁移更加轻松。
更新-在2017年的Rails 4.2.7和MySQL 5.7上仍然如此,这是Alejandro Babio在另一个答案中报告的。

不幸的是,您必须手动清理失败的MySQL迁移。MySQL不支持事务数据库定义更改。
Rails 2.2包括针对PostgreSQL的事务迁移。Rails 2.3包括SQLite的事务迁移。
这现在并不能真正解决您的问题,但是,如果您可以在将来的项目中选择数据库,我建议您使用支持事务性DDL的数据库,因为它使迁移更加轻松。
更新-在2017年的Rails 4.2.7和MySQL 5.7上仍然如此,这是Alejandro Babio在另一个答案中报告的。