数据库
首页 > 数据库> > mysql – Rails如何知道迁移已经启动/运行?

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

作者:互联网

参见英文答案 > How does Rails keep track of which migrations have run for a database?                                    1个
我刚刚加载了一个数据库转储,不仅创建了表,并且在这些表中加载了数据,还进行了大量的迁移.

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

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

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

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

解决方法:

Rails为名为schema_migrations的模式添加了一个表,该表将每个迁移的时间戳存储在一个列中.它不会显示在schema.rb中,但Rails会将db / migrate中的时间戳和schema.rb的时间戳与schema_migrations表的值进行比较,以确定运行了哪些迁移.

enter image description here

标签:ruby-on-rails,mysql,ruby-on-rails-4,rails-migrations
来源: https://codeday.me/bug/20190824/1705209.html