天天看點

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最大的重複資料即可!