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

Jay*_*Jay 5 ruby ruby-on-rails 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 **********
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 8

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

只需登录mysql

 SELECT * FROM schema_migrations; *- take note of the version_id*
Run Code Online (Sandbox Code Playgroud)

然后

DELETE FROM schema_migrations WHERE VERSION = version_id; 
Run Code Online (Sandbox Code Playgroud)

然后注销并验证

rake db:migrate:status
Run Code Online (Sandbox Code Playgroud)


spi*_*ann 6

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

  • 比你没有遵循Rails惯例.你太无耻了.;-) (2认同)

小智 5

您也可以使用SQL,但可以通过Rails控制台将其删除。

sql = "DELETE FROM schema_migrations WHERE VERSION = 'version_id'"
ActiveRecord::Base.connection.exec_query(sql)
Run Code Online (Sandbox Code Playgroud)