[英]Rails 6, Schema file not matching migration files after switching Git branch
Rails 6,使用 sqlite3 進行開發。
我的 schema.rb 有一個不應該存在的文件:沒有遷移文件(在當前的git 分支上)說應該生成它。 通過它的名字,我可以看到它來自我放棄的早期分支,並且沒有回去嘗試不同的方法來構建我的 rails 應用程序。
仔細檢查:當我嘗試訪問 Rails 控制台中的表時出現名稱錯誤,因此它僅存在於模式文件中,而不存在於數據庫本身中。
我可以強制 rails 運行或確認當前架構與遷移文件匹配,如果不匹配,是否會運行遷移?
編輯/更新:我需要澄清一下我有 6 個遷移文件,我檢查過這些文件以確保它們都不是來自早期廢棄的分支。
(管理員是有問題的表) ActiveRecord::Base.connection.tables
在 rails 命令行生成: ["schema_migrations", "ar_internal_metadata", "events", "admins", "details"]
當我做Event
時,我得到了列名稱和類型。 但是當我做管理員時,我得到
Traceback (most recent call last):
1: from (irb):3
NameError (uninitialized constant Admin)
所以問題是:如何正確地將數據庫重置為
schema.rb 文件是從數據庫當前的 state 自動生成的,所以只需運行rails db:migrate
重新生成 schema.rb 文件
運行 rails db:migrate:reset removed 似乎已經解決了這個問題:我的架構文件中沒有“管理員”,並且在 rails 命令行中運行ActiveRecord::Base.connection.tables
時它沒有顯示。
我相信這是由 Git 引起的,因為它在文件中有數據庫:/db/*. /db/*.sqlite3
,並且“管理員”是在我之前放棄且從未合並的分支上創建的。 所以它被保存在數據庫中,但是當我返回並在時間軸上創建一個新分支時,遷移文件被刪除了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.