diff --git a/src/pretix/base/migrations/0102_auto_20181017_0024.py b/src/pretix/base/migrations/0102_auto_20181017_0024.py index ea0e7adfd7..945ef0feb7 100644 --- a/src/pretix/base/migrations/0102_auto_20181017_0024.py +++ b/src/pretix/base/migrations/0102_auto_20181017_0024.py @@ -1,7 +1,10 @@ # Generated by Django 2.1 on 2018-10-17 00:24 import jsonfallback.fields +from django.core.exceptions import ImproperlyConfigured from django.db import migrations +from django_mysql.checks import mysql_connections +from django_mysql.utils import connection_is_mariadb def set_attendee_name_parts(apps, schema_editor): @@ -22,12 +25,40 @@ def set_attendee_name_parts(apps, schema_editor): ia.save(update_fields=['name_parts']) +def check_mysqlversion(apps, schema_editor): + errors = [] + any_conn_works = False + conns = list(mysql_connections()) + found = 'Unknown version' + for alias, conn in conns: + if connection_is_mariadb(conn) and hasattr(conn, 'mysql_version'): + if conn.mysql_version >= (10, 2, 7): + any_conn_works = True + else: + found = 'MariaDB ' + '.'.join(str(v) for v in conn.mysql_version) + elif hasattr(conn, 'mysql_version'): + if conn.mysql_version >= (5, 7): + any_conn_works = True + else: + found = 'MySQL ' + '.'.join(str(v) for v in conn.mysql_version) + + if conns and not any_conn_works: + raise ImproperlyConfigured( + 'As of pretix 2.2, you need MySQL 5.7+ or MariaDB 10.2.7+ to run pretix. However, we detected a ' + 'database connection to {}'.format(found) + ) + return errors + + class Migration(migrations.Migration): dependencies = [ ('pretixbase', '0101_auto_20181025_2255'), ] operations = [ + migrations.RunPython( + check_mysqlversion, migrations.RunPython.noop + ), migrations.RenameField( model_name='cartposition', old_name='attendee_name',