Django-migrate報錯問題解決方案
python3 manage.py makemigrations # 生成數(shù)據(jù)庫遷移文件
python3 manage.py migrate # 遷移數(shù)據(jù)庫
簡簡單單兩條命令就完成了django的數(shù)據(jù)庫遷移
但是今天一天的時間都耽誤在這了,一點都不夸張的那種,,早上去公司討論需求之后,研究了一下需要更改一下數(shù)據(jù)庫,在執(zhí)行makemigrations的時候OK沒有問題,但是migrate就報錯了
1.報錯: XX表已經存在,django.db.utils.OperationalError: (1050, "Table XX already exists
我:刪表,但是報錯,Cannot delete or update a parent row: a foreign key constraint fails 跟YY表存在外鍵關系,無法刪除,
百度了一番之后:1、SET foreign_key_checks = 0; // 先設置外鍵約束檢查關閉
2、drop table XX; // 刪除數(shù)據(jù),表或者視圖
3、SET foreign_key_checks = 1; // 開啟外鍵約束檢查,以保持表結構完整性
2.表刪了之后重新執(zhí)行migrate,又報錯別的表存在,如此一直循環(huán)往復,我都懷疑這是人家寫的一個while True,
我:找到了第二種解決方案:python manage.py migrate myapp --fake # 切記把myapp換成你要執(zhí)行的APP名稱
這條命令可以順利執(zhí)行,沒有報錯,但是又找不到對應生成的表在哪里,頂如還是說不能成功
3.將之前執(zhí)行makemigrations生成的migrations文件夾刪除,重新來過,OK,還是一樣的毛病,
4.重新創(chuàng)建了database之后,重新來過,只生成了django自帶的那幾張表,然而項目里大多的數(shù)據(jù)存儲都是依靠我在每一個app里創(chuàng)建的table里呀
5.將每個APP下的migrations都刪掉,database也重新來過,好嘛,連最基本的數(shù)據(jù)庫遷移文件夾都不能生成了,一瞬間有種悔不當初的感覺,但是又能怎么樣呢,就是需要調整數(shù)據(jù)庫呀
6.這個時候重頭開始來過,千萬不要慌,檢查settings里是否把每一個APP都注冊到,項目同名目錄下的__init__.py里是否包含了
import pymysql
pymysql.install_as_MySQLdb()
7.沒有問題之后這樣去執(zhí)行數(shù)據(jù)庫遷移的命令
python3 manage.py migrate # 生成django自帶的數(shù)據(jù)庫
python3 manage.py makemigrations appname # 將appname換成你要遷移的那個app的名稱
python3 manage.py migrate appname # 同理,換名
至此,一個小小的問題,真的就花了我一天的時間,好在終于解決了,
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
使用Pyhton集合set()實現(xiàn)成果查漏的例子
今天小編就為大家分享一篇使用Pyhton集合set()實現(xiàn)成果查漏的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python 讀取yaml文件的兩種方法(在unittest中使用)
這篇文章主要介紹了python 讀取yaml文件的兩種方法(在unittest中使用),幫助大家更好的理解和學習python,感興趣的朋友可以了解下2020-12-12conda創(chuàng)建環(huán)境過程出現(xiàn)"Solving?environment:?failed"報錯的詳細解
很長一段時間沒用conda了,然后突然使用conda創(chuàng)建環(huán)境報錯,所以下面這篇文章主要給大家介紹了關于conda創(chuàng)建環(huán)境過程出現(xiàn)"Solving?environment:?failed"報錯的詳細解決方法,需要的朋友可以參考下2022-11-11