Mysql 方便地从中删除后的schema_迁移情况

Mysql 方便地从中删除后的schema_迁移情况,mysql,ruby-on-rails,ruby-on-rails-3,activerecord,ruby-on-rails-3.1,Mysql,Ruby On Rails,Ruby On Rails 3,Activerecord,Ruby On Rails 3.1,30分钟前,我访问了MySQL和我在RoR中使用的数据库。然后我转到schema_迁移并键入 DELETE FROM schema_migration WHERE version=20120110152044; 完成这项工作后,我键入rake db:migrate,我希望几分钟前删除的迁移将再次添加到schema_迁移中,但我面临以下消息: MySQL2::错误表“足球联赛”已存在 有人能告诉我这条消息的原因吗?我不想听起来像是在讨人嫌,但这是因为你正在尝试创建一个名为football\u l

30分钟前,我访问了MySQL和我在RoR中使用的数据库。然后我转到schema_迁移并键入

DELETE FROM schema_migration WHERE version=20120110152044;
完成这项工作后,我键入rake db:migrate,我希望几分钟前删除的迁移将再次添加到schema_迁移中,但我面临以下消息:

MySQL2::错误表“足球联赛”已存在


有人能告诉我这条消息的原因吗?

我不想听起来像是在讨人嫌,但这是因为你正在尝试创建一个名为football\u leagues的表,而这个表已经存在。运行rake db:drop db:migrate删除表和数据库中的任何其他表,然后重新运行迁移。您将丢失该数据库中的所有数据。

您的20110152044迁移可能会创建具有以下内容的足球联赛表:

create_table :football_leagues do |t|
    #...
在up或change方法中。从schema_migrations表中删除条目不会回滚迁移,它只会更改完成迁移的位置的记录。您可能需要返回MySQL并手动删除足球联赛表:

mysql> drop table football_leagues;
如果您需要保留足球联赛,则必须更改迁移,以避免再次尝试创建足球联赛


您可以使用rake db:rollback回滚迁移,而不是试图手动编辑模式迁移,只有在确定自己确切知道自己在做什么的情况下,才应该编辑模式迁移。

,如何将该迁移版本放入schema_迁移中?您真的建议OP删除整个数据库只是为了修复一个表吗?你是疯了还是只是恶意的?@muistoshort他显然通过直接玩弄他的数据库搞砸了他的迁移。我很清楚这会导致数据丢失。照我说的做会使它恢复原状。仅仅为了解决一个小问题而删除整个数据库是没有意义的,而且弊大于利。