解決Django誤刪數據庫和migrations文件夾後報No changes detected

起因

向Django數據庫的表中插入中文字符後,報1366錯誤;經驗豐富的我馬上就開始修改數據庫的配置文件(vim /etc/my.cnf)
添加下列內容:

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

在這裏插入圖片描述
重啓數據庫

service mysqld restart

重新插入中文,發現還是報1366錯誤
在這裏插入圖片描述

問題出現

抓狂之下就刪除了Django原數據庫及數據庫相關的文件夾migrations(小項目,剛開始),新建數據庫,重新變更執行提示 :

python3 manage.py makemigrations 
python3 manage.py migrate

No changes detected
始終無法添加表結構,也沒有migrations目錄生成

解決方法

1. 先 python manage.py makemigrations --empty your_appname
生成一個空的initial.py
2. 再 python manage.py makemigrations
生成原先的model對應的migration file
3. 最後 python3 manage.py migrate 再次執行

總結

在執行
python3 manage.py makemigrations
python3 manage.py migrate
操作的時候,會檢測你migrations目錄下的0001_initial.py對應的模型腳本,如果沒有該腳本就會出現No changes detected錯誤

擴展

還有一種情況也會出現這種錯誤,就是你在其他平臺刪除對應的Django業務數據表後(非ORM方式),執行python3 manage.py makemigrations

解決:進入數據庫執行以下命令後,再重新變更提交
delete from django_migrations where app=‘yourappname’;

發佈了41 篇原創文章 · 獲贊 9 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章