我有一个正在尝试重新创建的新数据库,但是运行rake :schema:load根本不填充schema_migrations表。其结果是,每一次迁移都在等待中。schema.rb中的模式版本与最新的迁移相匹配,这个答案将指示我认为正在发生的事情(Rails在当前迁移nubmer之前用所有迁移编号填充迁移表),在这个特定的例子中,没有发生。我的同事已经证实,他们的数据库也在发生这种情况,所以这肯定是一个项目范围内的问题。虽然db用户正确地创建了所有表,但我们使用的是自定义模式的SQLServer。我完全不知所措。有什么想法吗?
发布于 2014-10-23 20:23:56
帕特里克,回答我自己的问题:
因此,最终的结果是,另一个开发人员安装了activerecord-nulldb-adapter,哪个猴子修补了ActiveRecord::Schema.define,并且不运行initialize_schema_migrations_table()或assume_migrated_up_version()。我卸载了gem,运行了我的db:schema:load。
发布于 2013-11-20 22:11:01
尝试使用跟踪标志运行该命令
rake db:schema:负载跟踪
在日志的末尾,您应该会看到行
-- initialize_schema_migrations_table()
-> 0.0045s此外,值得检查的是,您是否正确地测试了模式和schema_migrations表的生成表。
发布于 2018-08-16 18:29:25
我也有过类似的问题,谷歌把我带到了这里。这与你的问题不完全一样,但我会把它写下来,以防它能帮助到最后来到这里的人,因为我找不到别的东西。
简单地说:rails db:schema:load没有正确地设置我的schema_migrations表--当我运行rails db:migrate:status时,最近的迁移被标记为down,尽管从DB中可以清楚地看到迁移实际上已经运行。这意味着,当我试图在我的应用程序中做任何事情时,我会出现一个“迁移仍在等待”的错误。
结果发现问题是db/schema.rb。在文件的顶部,ActiveRecord::Schema.define(version: 20180803094506) do行不正确。由于我的源代码管理混淆了,20180803094506是错误的时间戳。通过将这个时间戳更改为我最近迁移的时间戳(即db/migrate中最后一个文件的名称的第一部分),我解决了这个问题。
( Rails源代码的相关部分是这里,如果有人感兴趣的话。)
https://stackoverflow.com/questions/20106684
复制相似问题