簡體   English   中英

Rails 6,切換 Git 分支后架構文件不匹配遷移文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM