開(kāi)發(fā)環(huán)境中隨著模型文件的修改會(huì)生成許多 migrations 文件在項(xiàng)目中。
那么這些文件有必要隨著項(xiàng)目同步到部署環(huán)境中嗎?
因?yàn)殚_(kāi)發(fā)環(huán)境和部署環(huán)境中數(shù)據(jù)庫(kù)并不同,那么在部署環(huán)境中執(zhí)行下面這些命令,項(xiàng)目中因?yàn)殚_(kāi)發(fā)環(huán)境中生成的 migrations 文件會(huì)對(duì)這些操作帶來(lái)什么影響?
python manage.py makemigrations python manage.py migrate`
官方推薦migrations放到版本控制中。
在開(kāi)發(fā)中可能會(huì)生成很多的migrations,我的做法是在提交的時(shí)候把migrations全部discard,然后運(yùn)行python manage.py makemigrations`重新生成一份最終版的migrations,如果沒(méi)有強(qiáng)迫癥,那么略過(guò)我的做法。
PS:python manage.py makemigrations
命令是生成你model中變動(dòng)對(duì)應(yīng)的數(shù)據(jù)庫(kù)遷移的文件。python manage.py migrate
是應(yīng)用上述遷移文件。
因?yàn)閙igrations相當(dāng)于你的數(shù)據(jù)庫(kù)的版本控制,可以保證開(kāi)發(fā)環(huán)境跟產(chǎn)品環(huán)境的數(shù)據(jù)庫(kù)一致。https://docs.djangoproject.com/en/1.10/topics/migrations/。
產(chǎn)品環(huán)境中因?yàn)榘姹究刂浦杏凶钚绿峤坏膍igrations,所以部署腳本中不需要運(yùn)行python manage.py makemigrations
,直接運(yùn)行python manage.py migrate
就好。