Django遷移錯(cuò)誤migrate

Django遷移之migrate問(wèn)題:table xx already exist

前面我們說(shuō)到了makemigrations是將models.py里的模型生成一個(gè)遷移腳本【也就是migration文件】银受,下一步則是通過(guò)migrate命令來(lái)在數(shù)據(jù)庫(kù)中生成表,這個(gè)步驟中往往也會(huì)遇到大大小小的問(wèn)題首启。

一还棱、migrate命令原理

1.1 執(zhí)行的操作

要解決問(wèn)題,需要知道命令到底執(zhí)行了些什么操作:

  1. migrate 將相關(guān)的遷移腳本翻譯成SQL語(yǔ)句徽千,然后在數(shù)據(jù)庫(kù)中執(zhí)行該語(yǔ)句
  2. 若該SQL語(yǔ)句執(zhí)行沒(méi)有問(wèn)題苫费,那么就會(huì)將這個(gè)遷移腳本的名字記錄到django_migrations表中

1.2 判斷執(zhí)行條件

那么如何判斷哪些遷移腳本要執(zhí)行呢?

migrate會(huì)將代碼中的遷移腳本和數(shù)據(jù)庫(kù)中的django_migrations 中的遷移腳本進(jìn)行對(duì)比双抽,如果發(fā)現(xiàn)數(shù)據(jù)庫(kù)中百框,沒(méi)有這個(gè)遷移腳本,那么就會(huì)執(zhí)行這個(gè)遷移腳本牍汹。

二铐维、migrate命令報(bào)錯(cuò)原理

原因:數(shù)據(jù)庫(kù)的django_migrations 表中的遷移版本記錄和代碼中的遷移腳本不一致導(dǎo)致的。

常見(jiàn)錯(cuò)誤示例:
table xx already exist

三慎菲、 解決方法

1嫁蛇、方法1: --fake參數(shù)

這一個(gè)參數(shù)是用于,將已經(jīng)創(chuàng)立的表的遷移操作隱藏露该,即將代碼中的遷移腳本添加到django_migrations中睬棚,但并不執(zhí)行SQL語(yǔ)句,避免每次執(zhí)行migrate的時(shí)候解幼,都執(zhí)行一些重復(fù)的遷移腳本抑党。

python manage.py migrate app_name --fake

再正常執(zhí)行遷移映射操作即可

2、方法2: 簡(jiǎn)單粗暴法

這一步如其名一樣簡(jiǎn)單撵摆,刪除了所有相關(guān)遷移腳本和遷移記錄后底靠,重新完全遷移。Lɑ恪?凉恰!需要保持?jǐn)?shù)據(jù)庫(kù)和模型字段一致9赌拧Q髦ァ!

  • 刪除migration文件夾下牵素,除____pycache____和____init____之外的所有文件【即遷移腳本】严衬。

  • 刪除數(shù)據(jù)庫(kù)中,相關(guān)字段的所有信息

    delete from django_migrations where app = app_name
    
  • 重新執(zhí)行遷移操作

    python manage.py makemigrations
    
    python manage.py migrate
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笆呆,一起剝皮案震驚了整個(gè)濱河市请琳,隨后出現(xiàn)的幾起案子粱挡,更是在濱河造成了極大的恐慌,老刑警劉巖俄精,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件询筏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡竖慧,警方通過(guò)查閱死者的電腦和手機(jī)嫌套,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)圾旨,“玉大人踱讨,你說(shuō)我怎么就攤上這事】车模” “怎么了痹筛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)廓鞠。 經(jīng)常有香客問(wèn)我帚稠,道長(zhǎng),這世上最難降的妖魔是什么诫惭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任翁锡,我火速辦了婚禮蔓挖,結(jié)果婚禮上夕土,老公的妹妹穿的比我還像新娘。我一直安慰自己瘟判,他們只是感情好怨绣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拷获,像睡著了一般篮撑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匆瓜,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天赢笨,我揣著相機(jī)與錄音,去河邊找鬼驮吱。 笑死茧妒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的左冬。 我是一名探鬼主播桐筏,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拇砰!你這毒婦竟也來(lái)了梅忌?” 一聲冷哼從身側(cè)響起狰腌,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牧氮,沒(méi)想到半個(gè)月后琼腔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踱葛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年展姐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剖毯。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡圾笨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逊谋,到底是詐尸還是另有隱情擂达,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布胶滋,位于F島的核電站板鬓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏究恤。R本人自食惡果不足惜俭令,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望部宿。 院中可真熱鬧抄腔,春花似錦、人聲如沸理张。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雾叭。三九已至悟耘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間织狐,已是汗流浹背暂幼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留移迫,地道東北人旺嬉。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像起意,于是被迫代替她去往敵國(guó)和親鹰服。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容