Django數(shù)據(jù)庫遷移的錯誤
當(dāng)我們在使用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í)行遷移映射操作,只需要
- 在虛擬機中,進(jìn)入到相應(yīng)的項目地址,然后
python manage.py makemigrations app_name
python manage.py migrate app_name
==app_name==為創(chuàng)建的app名
- 或者在pycharm 中,點擊tools->start ssh session
再進(jìn)入相應(yīng)的項目地址輸入上述命令
-
或者在pycharm中,點擊tools->Run manage.py Task
直接輸入makemigrations app_name執(zhí)行不出錯后,再輸入migrate app_name
2.數(shù)據(jù)庫中刪表引起的錯
解決方法是,
1.將app文件包中的

pycharm中名為news的app下面的文件
這類文件刪除,即前帶有序號的文件刪除
-
打開數(shù)據(jù)庫,將數(shù)據(jù)庫中表django_migrations與相應(yīng)app模型表的數(shù)據(jù)刪除,這里以app為doc為例
數(shù)據(jù)庫中表django_migrations里app字段值為doc的信息使用代碼,將相應(yīng)信息刪除【其中的app為字段,app_name為創(chuàng)建的app名】
delete from django_migrations where app = 'app_name' 重新同步文件后,再次執(zhí)行makemigrations 和 migrate操作?!疽娊鉀Q方法1】
三、聯(lián)系方式
如果您有什么意見或者建議,歡迎與我聯(lián)系!
