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表的值进行比较,以确定运行了哪些迁移.
标签:ruby-on-rails,mysql,ruby-on-rails-4,rails-migrations 来源: https://codeday.me/bug/20190824/1705209.html