Update migration for MySQL compliance

This commit is contained in:
Raphael Michel
2021-03-30 10:04:09 +02:00
parent 2d4249ab31
commit 184a45b773

View File

@@ -5,24 +5,29 @@ from django.db import migrations
def clean_duplicates(apps, schema_editor): def clean_duplicates(apps, schema_editor):
while True: while True:
# Double subquery to avoid MySQL error 1093
delete_options = """ delete_options = """
DELETE DELETE
FROM pretixbase_questionanswer_options FROM pretixbase_questionanswer_options
WHERE questionanswer_id IN ( WHERE questionanswer_id IN (
SELECT MIN(qa.id) SELECT minid FROM (
FROM pretixbase_questionanswer qa SELECT MIN(qa.id) minid
GROUP BY qa.cartposition_id, qa.orderposition_id, qa.question_id FROM pretixbase_questionanswer qa
HAVING COUNT(*) > 1 GROUP BY qa.cartposition_id, qa.orderposition_id, qa.question_id
HAVING COUNT(*) > 1
) AS tmptable
); );
""" """
delete_answers = """ delete_answers = """
DELETE DELETE
FROM pretixbase_questionanswer FROM pretixbase_questionanswer
WHERE pretixbase_questionanswer.id IN ( WHERE pretixbase_questionanswer.id IN (
SELECT MIN(qa.id) SELECT minid FROM (
FROM pretixbase_questionanswer qa SELECT MIN(qa.id) minid
GROUP BY qa.cartposition_id, qa.orderposition_id, qa.question_id FROM pretixbase_questionanswer qa
HAVING COUNT(*) > 1 GROUP BY qa.cartposition_id, qa.orderposition_id, qa.question_id
HAVING COUNT(*) > 1
) AS tmptable
); );
""" """
with schema_editor.connection.cursor() as cursor: with schema_editor.connection.cursor() as cursor: