为什么我的 rails db:migrate 不工作?

Why is my rails db:migrate not working?

我输入 rails db:migrate 并收到以下错误。我用谷歌搜索,有人说要将迁移版本从 [4.2] 更改为 [5.1],但仍然没有用。

rails db:migrate rails aborted! StandardError: An error has occurred, this and all later migrations canceled:

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

class CreateCkeditorAssets < ActiveRecord::Migration[4.2]

Rails 5 更改了创建迁移的方式。您必须像这样指定 Rails 版本从 Rails 5 开始(假设您使用的是 Rails 5.1):

class CreateCkeditorAssets < ActiveRecord::Migration[5.1]

或者,您可以尝试创建测试迁移并查看您的 Rails 版本如何生成迁移,然后从那里开始:

rails g model Test name:string

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