Django 設置聯合唯一 unique_together migrate時報錯處理

一個表的model中,根據生產環境需要,需要設置site和對應的cdn服務器ip是聯合唯一的,最開始創建表的時候,沒有考慮到這個問題,後來要設置unique_together,但是在migrate的時候,報錯:a unique database constraint for 2 or more fields together


很明顯數據庫中有很多這兩個字段重複的數據,所以要刪除後再migrate就沒問題了,但是怎麼刪除這些數據呢?


通過以下兩個方法即可:

1)CREATE TEMPORARY TABLE tmp_table SELECT * FROM 目標表;


2)delete from 目標表 where id not in ( select max(id) from tmp_table group by cdn_ipaddr,site_id);


說明:

創建臨時表,把目標表的數據複製到臨時表中;

刪除目標表中數據,只留id最大的重複數據即可!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章