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
def test_non_mysql(self): conn = mock.MagicMock(vendor="sqlite3") assert not connection_is_mariadb(conn)
def test_connection(self): connection_is_mariadb(connections[DEFAULT_DB_ALIAS])
def test_connection_proxy(self): connection_is_mariadb(connection)
def setUpClass(cls): if not (connection_is_mariadb(connection) and connection.mysql_version >= (10, 0, 1)): raise SkipTest("Dynamic Columns require MariaDB 10.0.1+") super(DynColTestCase, cls).setUpClass()
def setUp(self): super(RegexpFunctionTests, self).setUp() have_regex_functions = (connection_is_mariadb(connection) and connection.mysql_version >= (10, 0, 5)) if not have_regex_functions: raise SkipTest("MariaDB 10.0.5+ is required")
def setUpClass(cls): super(PluginOperationTests, cls).setUpClass() has_metadata_lock_plugin = (connection_is_mariadb(connection) and connection.mysql_version >= (10, 0, 7)) if not has_metadata_lock_plugin: raise SkipTest("The metadata_lock_info plugin is required")
def setUpClass(cls): if not (not connection_is_mariadb(connection) and connection.mysql_version >= (5, 7)): raise SkipTest("JSONField requires MySQL 5.7+") super().setUpClass()
def skip_if_mysql_8_plus(): if not connection_is_mariadb(connection) and connection.mysql_version >= ( 8, ): pytest.skip("Requires MySQL<8 or MariaDB") yield
def check(cls, **kwargs): # Disable the checks on MySQL so that checks tests don't fail if not (connection_is_mariadb(connection) and connection.mysql_version >= (10, 0, 1)): return [] return super(SpeclessDynamicModel, cls).check(**kwargs)
def setUpClass(cls): if (connection_is_mariadb(connection) or connection.mysql_version[:2] < (5, 6)): raise SkipTest( "Django only uses datetime(6) columns on MySQL 5.6+") super(Datetime6TestMixin, cls).setUpClass()
def test_mariadb(self): conn = mock.MagicMock(vendor="mysql") conn.connection.get_server_info.return_value = "10.0.3-MariaDB-1~precise-log" assert connection_is_mariadb(conn) conn.connection.get_server_info.side_effect = ValueError("re-called") assert connection_is_mariadb(conn)
def is_mariadb(self): return connection_is_mariadb(self)