如何在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命令,但它说文件丢失了。我不知道该怎么做。
有人可以解释如何删除此列表,也许可以了解为什么会发生这种情况。
答案 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)