如何解决 Rails 7 中待处理的迁移错误

问题描述 投票:0回答:1

我创建了一个迁移,其中我错误地复制了“created_at”的列,现在我的屏幕显示此错误,当我删除重复项后,错误在删除重复项之前也是相同的。

这是终端消息:

PS C:\Users\iamvee_k\Desktop\Rails Projects\blog> rails db:migrate
== 20231003192318 AddTimestampsToArticles: migrating ==========================
-- add_column(:articles, :created_at, :datetime)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: duplicate column name: created_at
C:/Users/iamvee_k/Desktop/Rails Projects/blog/db/migrate/20231003192318_add_timestamps_to_articles.rb:3:in `change'

Caused by:
ActiveRecord::StatementInvalid: SQLite3::SQLException: duplicate column name: created_at
C:/Users/iamvee_k/Desktop/Rails Projects/blog/db/migrate/20231003192318_add_timestamps_to_articles.rb:3:in `change'

Caused by:
SQLite3::SQLException: duplicate column name: created_at
C:/Users/iamvee_k/Desktop/Rails Projects/blog/db/migrate/20231003192318_add_timestamps_to_articles.rb:3:in `change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

这是输出屏幕:

ruby-on-rails ruby rails-migrations ruby-on-rails-7
1个回答
0
投票

如果您不介意丢失所拥有的数据,则可以使用

rails db:reset
。这将删除数据库并再次运行迁移(因此请确保在运行命令之前解决有额外
created_ at
的问题)

如果您不想丢失数据,可以使用

rails db:rollback
。它将回滚上次迁移,您可以使用
STEP

传递您想要的步骤数(在您的情况下为 1,但您不需要传递它)

例如:

rails db:rollback STEP=3 # => Rollsback 3 migrations

更多信息在这里: https://guides.rubyonrails.org/active_record_migrations.html#rolling-back

© www.soinside.com 2019 - 2024. All rights reserved.