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
示例#2
0
 def test_non_mysql(self):
     conn = mock.MagicMock(vendor="sqlite3")
     assert not connection_is_mariadb(conn)
示例#3
0
 def test_connection(self):
     connection_is_mariadb(connections[DEFAULT_DB_ALIAS])
示例#4
0
 def test_connection_proxy(self):
     connection_is_mariadb(connection)
示例#5
0
 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()
示例#6
0
 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")
示例#7
0
 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()
示例#9
0
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
示例#10
0
 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()
示例#12
0
 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)
示例#13
0
 def is_mariadb(self):
     return connection_is_mariadb(self)