我有一个版本号为 20120926232105 的迁移。我的架构版本为 20121003190827。
我的网站托管在 Heroku 上,当我运行时
heroku run rake db:migrate -a my-app
我收到一个错误,它试图在迁移 20120926232105 中创建的表已经存在(应该如此)。我不明白——schema_migration 表的重点不就是要记录最后一次成功的迁移吗?
我有一个版本号为 20120926232105 的迁移。我的架构版本为 20121003190827。
我的网站托管在 Heroku 上,当我运行时
heroku run rake db:migrate -a my-app
我收到一个错误,它试图在迁移 20120926232105 中创建的表已经存在(应该如此)。我不明白——schema_migration 表的重点不就是要记录最后一次成功的迁移吗?
这个人解释得很好。
基本上,在某处有一个名为“schema_migrations”的表。您迁移的“版本号”实际上只是一个时间戳。此外,在您的“schema_migrations”表中没有带有该时间戳的迁移记录。由于迁移存在,并且在“schema_migrations”表中找不到它的时间戳,Rake 知道运行它。
试试看grep -r "table_name" db/migrate
它是否在那里两次。