Django-migrate報(bào)錯(cuò)問(wèn)題解決方案
python3 manage.py makemigrations # 生成數(shù)據(jù)庫(kù)遷移文件
python3 manage.py migrate # 遷移數(shù)據(jù)庫(kù)
簡(jiǎn)簡(jiǎn)單單兩條命令就完成了django的數(shù)據(jù)庫(kù)遷移
但是今天一天的時(shí)間都耽誤在這了,一點(diǎn)都不夸張的那種,,早上去公司討論需求之后,研究了一下需要更改一下數(shù)據(jù)庫(kù),在執(zhí)行makemigrations的時(shí)候OK沒有問(wèn)題,但是migrate就報(bào)錯(cuò)了
1.報(bào)錯(cuò): XX表已經(jīng)存在,django.db.utils.OperationalError: (1050, "Table XX already exists
我:刪表,但是報(bào)錯(cuò),Cannot delete or update a parent row: a foreign key constraint fails 跟YY表存在外鍵關(guān)系,無(wú)法刪除,
百度了一番之后:1、SET foreign_key_checks = 0; // 先設(shè)置外鍵約束檢查關(guān)閉
2、drop table XX; // 刪除數(shù)據(jù),表或者視圖
3、SET foreign_key_checks = 1; // 開啟外鍵約束檢查,以保持表結(jié)構(gòu)完整性
2.表刪了之后重新執(zhí)行migrate,又報(bào)錯(cuò)別的表存在,如此一直循環(huán)往復(fù),我都懷疑這是人家寫的一個(gè)while True,
我:找到了第二種解決方案:python manage.py migrate myapp --fake # 切記把myapp換成你要執(zhí)行的APP名稱
這條命令可以順利執(zhí)行,沒有報(bào)錯(cuò),但是又找不到對(duì)應(yīng)生成的表在哪里,頂如還是說(shuō)不能成功
3.將之前執(zhí)行makemigrations生成的migrations文件夾刪除,重新來(lái)過(guò),OK,還是一樣的毛病,
4.重新創(chuàng)建了database之后,重新來(lái)過(guò),只生成了django自帶的那幾張表,然而項(xiàng)目里大多的數(shù)據(jù)存儲(chǔ)都是依靠我在每一個(gè)app里創(chuàng)建的table里呀
5.將每個(gè)APP下的migrations都刪掉,database也重新來(lái)過(guò),好嘛,連最基本的數(shù)據(jù)庫(kù)遷移文件夾都不能生成了,一瞬間有種悔不當(dāng)初的感覺,但是又能怎么樣呢,就是需要調(diào)整數(shù)據(jù)庫(kù)呀
6.這個(gè)時(shí)候重頭開始來(lái)過(guò),千萬(wàn)不要慌,檢查settings里是否把每一個(gè)APP都注冊(cè)到,項(xiàng)目同名目錄下的__init__.py里是否包含了
import pymysql
pymysql.install_as_MySQLdb()
7.沒有問(wèn)題之后這樣去執(zhí)行數(shù)據(jù)庫(kù)遷移的命令
python3 manage.py migrate # 生成django自帶的數(shù)據(jù)庫(kù)
python3 manage.py makemigrations appname # 將appname換成你要遷移的那個(gè)app的名稱
python3 manage.py migrate appname # 同理,換名
至此,一個(gè)小小的問(wèn)題,真的就花了我一天的時(shí)間,好在終于解決了,
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用描述符實(shí)現(xiàn)屬性類型檢查的案例解析
這篇文章主要介紹了Python使用描述符實(shí)現(xiàn)屬性類型檢查,實(shí)例屬性就是在一個(gè)類中將另一個(gè)類的實(shí)例作為該類的一個(gè)數(shù)屬性,本文通過(guò)代碼演示給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
python polars數(shù)據(jù)科學(xué)庫(kù)對(duì)比Pandas優(yōu)勢(shì)分析
這篇文章主要為大家介紹了python polars數(shù)據(jù)科學(xué)庫(kù)對(duì)比Pandas優(yōu)勢(shì)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
基于Python編寫一個(gè)中秋節(jié)嫦娥投食小游戲
今天給大家?guī)?lái)的是給玉兔投喂月餅的小游戲。八月十五中秋夜晚,讓我們對(duì)著月亮許愿:希望我們?cè)谝夂驮谝馕覀兊娜?,諸邪避退、百事無(wú)忌、平安喜樂、萬(wàn)事勝意。提前祝大家中秋節(jié)快樂2022-09-09
詳解Python的Flask框架中的signals信號(hào)機(jī)制
這里將為大家來(lái)詳解Python的Flask框架中的signals信號(hào)機(jī)制,包括講述信號(hào)的用途,并給出創(chuàng)建信號(hào)、訂閱信號(hào)、發(fā)送信號(hào)的方法,需要的朋友可以參考下2016-06-06
Python3 虛擬開發(fā)環(huán)境搭建過(guò)程(圖文詳解)
這篇文章主要介紹了Python3 虛擬開發(fā)環(huán)境搭建過(guò)程,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Django自動(dòng)注冊(cè)tasks及使用方式
這篇文章主要為大家介紹了Django自動(dòng)注冊(cè)tasks及使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
使用python創(chuàng)建生成動(dòng)態(tài)鏈接庫(kù)dll的方法
這篇文章主要介紹了使用python創(chuàng)建生成動(dòng)態(tài)鏈接庫(kù)dll的方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05

