rake db:schema:load多次加载schema.rb?

时间:2017-07-06 15:50:58

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

从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没有强制执行表约束,它运行完成。

2 个答案:

答案 0 :(得分:1)

您两次看到它,因为Rails在developmenttest中同时运行数据库任务。

有关详细信息,请参见ActiveRecord::Tasks::Databasetasks文件,尤其是方法development(之所以这样,是因为您指的是该文件)和#load_schema_current

答案 1 :(得分:0)

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