我输入rails db:migrate
并收到以下错误。我用谷歌搜索,有人说将迁移版本从 [4.2] 更改为 [5.1],但它仍然没有奏效。
rails db:迁移 rails 中止!StandardError:发生错误,此迁移和所有后续迁移已取消:
不支持直接从 ActiveRecord::Migration 继承。请指定迁移所针对的 Rails 版本:
类 CreateCkeditorAssets < ActiveRecord::Migration[4.2]
我输入rails db:migrate
并收到以下错误。我用谷歌搜索,有人说将迁移版本从 [4.2] 更改为 [5.1],但它仍然没有奏效。
rails db:迁移 rails 中止!StandardError:发生错误,此迁移和所有后续迁移已取消:
不支持直接从 ActiveRecord::Migration 继承。请指定迁移所针对的 Rails 版本:
类 CreateCkeditorAssets < ActiveRecord::Migration[4.2]
Aditya已经写了答案,手动更改所有迁移是一项繁重的任务,所以我写了一个单行脚本来做到这一点
在 Linux 中(Gnu sed)
grep -rl "ActiveRecord::Migration$" db | xargs sed -i 's/ActiveRecord::Migration/ActiveRecord::Migration[4.2]/g'
在 Mac 中(BSD sed)
grep -rl "ActiveRecord::Migration$" db | xargs sed -i "" "s/ActiveRecord::Migration/ActiveRecord::Migration[4.2]/g"
请注意,您可以4.2
使用要升级到 5.1 的导轨替换
Rails 5 改变了创建迁移的方式。您必须像这样从 Rails 5 开始指定 Rails 版本(假设您使用的是 Rails 5.1):
class CreateCkeditorAssets < ActiveRecord::Migration[5.1]
或者,您可以尝试创建一个测试迁移并查看您的 Rails 版本如何生成迁移,然后从那里获取它:
rails g model Test name:string