【问题标题】:rake db:schema:load loads schema.rb multiple times?rake db:schema:load 多次加载 schema.rb?
【发布时间】:2017-12-10 17:47:39
【问题描述】:

从 Rails 3 升级到 Rails 4 后,db:schema:load 任务失败。我做了一些研究,发现升级后当我运行bundle exec rake db:schema:load 时,db/schema.rb 文件被加载了两次。第一次运行良好;然后第二次通过它失败,因为 create_table force: true 由于表上存在依赖约束而失败。

我已经剥离了所有额外的 rake 任务并进行了增强以尝试排除我的任何代码,但这仍然会加载 schema.rb 两次。它总是恰好是我能够在 SQLite 上成功运行它并在那里看到相同行为的两倍,但由于 SQLite 没有强制执行表约束,它运行完成。

【问题讨论】:

  • 我在 Rails 5 中看到了这一点,但仅在开发环境中。 RAILS_ENV=test 工作正常。

标签: ruby ruby-on-rails-4 rake


【解决方案1】:

您可以检查以确保您的 Rakefile 没有两次加载任务。当 Rake 注册一个与现有任务同名的任务时,它将按顺序运行,而不是用新定义替换旧定义。

【讨论】:

    【解决方案2】:

    您看到了两次,因为在 development Rails 中,test 和 development 在同一运行中运行 db 任务。

    详情请看ActiveRecord::Tasks::Databasetasks文件,尤其是方法#load_schema_current(这个是因为你指的是它)和#each_current_configuration

    【讨论】:

    • 如果就是这样,那为什么会出错?
    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 2012-01-11
    • 2011-06-24
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2011-09-22
    相关资源
    最近更新 更多