Rails 4从迁移索引中删除迁移ID

时间:2013-12-20 22:35:00

标签: ruby-on-rails ruby ruby-on-rails-4

如何在rake db:migrate:status中删除带有“** NO FILE **”的迁移ID列表?例如:

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20131017204224  Create users
   up     20131218005823  ********** NO FILE **********
   up     20131218011334  ********** NO FILE **********

我不明白为什么当我在玩游戏如何工作时自己手动删除它时,它仍会保留旧的迁移文件。这是为了保存记录吗?但是当我没有与之相关的名称时,有什么用呢?

我尝试对这些文件使用db:migrate:down命令,但它说文件丢失了。我不知道该怎么做。

有人可以解释如何删除此列表,也许可以了解为什么会发生这种情况。

3 个答案:

答案 0 :(得分:8)

您删除了该文件,但ID仍在架构表中。

只需登录mysql

 SELECT * FROM schema_migrations; *- take note of the version_id*

然后

DELETE FROM schema_migrations WHERE VERSION = version_id; 

然后注销并验证

rake db:migrate:status

答案 1 :(得分:6)

您需要从数据库中的schema_migrations表中删除这些数字。

答案 2 :(得分:4)

您也可以使用SQL删除它,但是可以通过rails控制台删除它。

sql = "DELETE FROM schema_migrations WHERE VERSION = 'version_id'"
ActiveRecord::Base.connection.exec_query(sql)