1

私は現在これを持っています:

class Committee(models.Model):
    # ...some fields...
    committee_xml_id = models.IntegerField()

committee_xml_idフィールドを一意にする必要があります。つまり、次のようにします。

class Committee(models.Model):
    # ...some fields...
    committee_xml_id = models.IntegerField(unique=True)

私もそれを作ってみました:

class Committee(models.Model):
    # ...some fields...
    committee_xml_id = models.IntegerField(unique=True, db_index=False)

残念ながら、結果は同じです。

を実行./manage.py makemigrationsした後、./manage.py migrate問題は次のとおりです。

django.db.utils.OperationalError: (1061, "Duplicate key name 'appname_committee_committee_xml_id_d1210032_uniq'")

一見すると、テーブルに固有でないデータが既に存在することが問題のように見えますが、問題は正確には存在しないことです。テーブルには 45 行しかなく、フィールドcommittee_xml_idには一意のエントリのみが含まれています。

次のクエリは、重複がない場合に予想されるように、結果を返しません。

SELECT
    com.committee_xml_id,
    COUNT(*)
FROM
    appname_committee AS com
GROUP BY
    com.committee_xml_id
HAVING
    COUNT(*) != 1

厳密には、-condition を指定しない同じクエリを次に示しますHAVING。これは、実際に重複がないことを明確に示しています。

SELECT
    com.committee_xml_id,
    COUNT(*)
FROM
    appname_committee AS com
GROUP BY
    com.committee_xml_id

結果は次のとおりです。

# committee_xml_id, COUNT(*)
78, 1
79, 1
124, 1
125, 1
129, 1
130, 1
131, 1
132, 1
133, 1
134, 1
137, 1
139, 1
140, 1
141, 1
142, 1
147, 1
148, 1
149, 1
150, 1
151, 1
152, 1
153, 1
154, 1
160, 1
166, 1
167, 1
168, 1
169, 1
170, 1
176, 1
192, 1
193, 1
194, 1
195, 1
198, 1
199, 1
200, 1
201, 1
202, 1
203, 1
204, 1
205, 1
206, 1
207, 1
216, 1

どんな助けでも大歓迎です。

4

1 に答える 1