从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没有执行表约束,它一直运行到完成。
发布于 2018-08-15 13:28:32
您会看到它两次,因为在development中,Rails在同一个运行中运行test和development的db任务。
有关详细信息,请参阅ActiveRecord::Tasks::Databasetasks文件,特别是方法#load_schema_current (此方法是因为您引用了它)和#each_current_configuration
发布于 2017-07-08 05:26:15
您可能会检查以确保您的Rakefile没有加载两次任务。当Rake注册一个与现有任务同名的任务时,它将按顺序运行两个任务,而不是用新的定义替换旧的定义。
https://stackoverflow.com/questions/44953657
复制相似问题