Rails如何知道迁移已经启动/运行?

Ars*_*Ali 3 mysql ruby-on-rails rails-migrations ruby-on-rails-4

我只是加载了一个数据库转储,不仅创建了表,并且在这些表中加载了数据,还进行了大量的迁移.

在运行剩余的迁移之后,运行rake db:migrate:status告诉我每次迁移的状态UP,但是迁移实际上并没有完成他们应该做的事情.

例如,我有一个创建一个名为的表的迁移notes.它已被提升,表格notes不存在.所以我不得不进行redo这种迁移,但是在self.down方法中注释了代码.

我的问题是:UP即使它试图创建的表尚未在数据库中创建,迁移如何处于状态.或者我想,我之前加载的db哑,已经填充了schema_migrations表格,Rails认为大多数迁移都在进行,但实际上并非如此.

现在,我是否需要手动完成rake db:migrate:redo VERSION=xxxxxxx每次迁移,还是有更好的解决方案?

Ant*_*y E 5

Rails为您的模式添加了一个表,该表将schema_migrations每个迁移的时间戳存储在一个列中.它没有出现在schema.rb,但是Rails会将时间戳db/migrate和时间戳schema.rbschema_migrations表的值进行比较,以确定哪些迁移已经运行.

在此输入图像描述