从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没有强制执行表约束,它运行完成。
答案 0 :(得分:1)
您两次看到它,因为Rails在development
和test
中同时运行数据库任务。
有关详细信息,请参见ActiveRecord::Tasks::Databasetasks文件,尤其是方法development
(之所以这样,是因为您指的是该文件)和#load_schema_current
答案 1 :(得分:0)
您可能会检查以确保您的Rakefile没有两次加载任务。当Rake注册一个与现有任务同名的任务时,它将按顺序运行,而不是用旧的定义替换旧的定义。