我创建了一个迁移,其中我错误地复制了“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)
如果您不介意丢失所拥有的数据,则可以使用
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