为什么我的 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
我输入 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