2017-02-06 58 views
4

我工作的一個應用程序在Django的1.9Django的跳過特定遷移(沒有遷移申請)

我創建的(從40 MAX_LENGTH〜120℃)而改變的一個領域,從User模型。 我知道遷移沒有運行,我可以看到它明顯被忽略。 我似乎無法理解爲什麼會發生這種情況。
我確信依賴關係也是適用的。
事情我嘗試:
1-驗證數據庫並不表示它的運行(django_migrations表): 看有沒有0021_alter_user_lms_user_id

django_migrations table

2 - 我檢查Django是能看到遷移文件:

django showmigrations command result

我很驚訝這個結果。 我無法清除我的遷移或數據庫,因爲這是一個包含數據的已部署應用程序。

任何幫助表示讚賞

注:我檢查了所有相關問題發佈了這個問題之前,我能找到。

回答

1

我自己修復它並希望這可以幫助其他人遇到與Django相同或類似的問題。

好像Django不只是檢查遷移是否已通過文件名來運行,而且它通過領先的數字文件名中(至少在我的經驗)注重文件的順序。
歷史的步驟:

的Git分支:爲0021_alter_user_lms_user_id創建遷移並沒有被合併到主呢。

混帳分枝b:創建遷移0022_toolconsumer_is_vericite_enabled(想我應該按照順序和手動前綴的文件名與0022_

現在,在這一點上,我合併混帳分枝b到主機和運行遷移。 所以,現在當我合併git分支到主,並希望運行遷移,django看到文件,但因爲0022_假設在0021_後,跳過文件,而不是實際檢查它是否適用於數據庫。

修復:我基本上是重命名的文件名從0021_alter_user_lms_user_id0023_alter_user_lms_user_id(不要忘了更新的依賴),然後跑掉./manage.py migrate和沒有問題的工作。看到圖片。

working migration result screen capture

希望這有助於人。