Django數(shù)據(jù)庫遷移的錯誤
當我們在使用Django的ORM時秒咨,一般分為三步
- 在models.py中設(shè)置模型
- 執(zhí)行makemigrations
- 執(zhí)行migrate
在這三步總會多多少少的遇到一些錯誤,編者以比較常見的錯誤為例掌挚,提出了一些解決方法雨席。
一、錯誤描述
1吠式、創(chuàng)建了新的字段陡厘,數(shù)據(jù)庫中無
2、執(zhí)行了makemigrations后手動在數(shù)據(jù)庫中刪除了表
- 再次執(zhí)行時沒有報錯卻也沒在數(shù)據(jù)庫中生成表
- 再次執(zhí)行時報錯說并不存在那樣一個文件或者目錄
二奇徒、解決方法
1.添加字段后數(shù)據(jù)庫中無
這種情況一般是沒有執(zhí)行遷移映射操作雏亚,只需要
- 在虛擬機中,進入到相應的項目地址摩钙,然后
python manage.py makemigrations app_name
python manage.py migrate app_name
==app_name==為創(chuàng)建的app名
- 或者在pycharm 中罢低,點擊tools->start ssh session
再進入相應的項目地址輸入上述命令
-
或者在pycharm中,點擊tools->Run manage.py Task
直接輸入makemigrations app_name執(zhí)行不出錯后,再輸入migrate app_name
2.數(shù)據(jù)庫中刪表引起的錯
解決方法是网持,
1.將app文件包中的
這類文件刪除宜岛,即前帶有序號的文件刪除
-
打開數(shù)據(jù)庫,將數(shù)據(jù)庫中表django_migrations與相應app模型表的數(shù)據(jù)刪除功舀,這里以app為doc為例
使用代碼萍倡,將相應信息刪除【其中的app為字段,app_name為創(chuàng)建的app名】
delete from django_migrations where app = 'app_name'
重新同步文件后辟汰,再次執(zhí)行makemigrations 和 migrate操作列敲。【見解決方法1】
三帖汞、聯(lián)系方式
如果您有什么意見或者建議戴而,歡迎與我聯(lián)系!