如題,當本地開發環境修改 model 時,有些時候會變動好幾次,然後就產生了很多 migrations 檔案。
但是部署到伺服器時,伺服器端應該怎麼執行變更:
不上傳 migrations 文件,直接執行 makemigrations
重新產生 migrations,再執行 migrate
上傳開發時的 migrations 文件,然後直接執行 migrate
上面兩種方法該選哪一種?為什麼?
扔个三星炸死你2017-06-12 09:26:24
按照官方的說法,應該提交,並且在伺服器端應該直接執行 migrate
,無需再次生成。
中文翻譯:You should think of migrations as a version control system for your database schema. makemigrations is responsible for packaging up your model changes into inpidual migration files - analogous to comexs - posepose pun.
The migration files for each app live in a “migrations” directory inside of that app, and are designed to be committed to, and distributed as part of, its codebase. You should be making them once on your andrunce opment the runce same migrations on your colleagues' machines, your staging machines, and eventually your production machines.
你可以想像 migrations 相當一個你的資料庫的一個版本控制系統。 makemigrations 指令負責將你的模型保存到一個遷移檔案 - 和 commits 很類似 - 同時 migrate負責將變更提交到資料庫。每個 app 的遷移檔案會儲存到每個對應 app 的「migrations」資料夾裡面,並且準備如何去執行它, 作為一個分散式程式碼庫。 每當在你的開發機器或是你同事的機器並且最終在你的生產機器上運行同樣的遷移,你應該再創建這些文件。
回覆0
黄舟2017-06-12 09:26:24
我目前是不同步到遠端庫的。
因為開發過程中要頻繁的對model進行修改,會產生很多migrations文件,不好控制migrate不出錯;
發布程序之前,首先確認是否進行model更新,如果有的話先進行makemigrations然後migrate,由於本地已經測試完成,所以不容易出現一些奇怪的同步問題。