diff -u b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php --- b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php +++ b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php @@ -180,19 +180,16 @@ 'init_commands' => [], ]; + $sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY'; // NO_AUTO_CREATE_USER is removed in MySQL 8.0.11 // https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html#mysqld-8-0-11-deprecation-removal $version_server = $pdo->getAttribute(\PDO::ATTR_SERVER_VERSION); - if (version_compare($version_server, '8.0.11', '>=')) { - $connection_options['init_commands'] += array( - 'sql_mode' => "SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY'", - ); - } - else { - $connection_options['init_commands'] += [ - 'sql_mode' => "SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,ONLY_FULL_GROUP_BY'", - ]; + if (version_compare($version_server, '8.0.11', '<')) { + $sql_mode .= ',NO_AUTO_CREATE_USER'; } + $connection_options['init_commands'] += [ + 'sql_mode' => "SET sql_mode = '$sql_mode'", + ]; // Execute initial commands. foreach ($connection_options['init_commands'] as $sql) { diff -u b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php --- b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php @@ -154,12 +154,15 @@ if (isset($spec['length'])) { $sql .= '(' . $spec['length'] . ')'; } + if (isset($spec['type']) && $spec['type'] == 'varchar_ascii') { + $sql .= ' CHARACTER SET ascii'; + } if (!empty($spec['binary'])) { $sql .= ' BINARY'; } // Note we check for the "type" key here. "mysql_type" is VARCHAR: - if (isset($spec['type']) && $spec['type'] == 'varchar_ascii') { - $sql .= ' CHARACTER SET ascii COLLATE ascii_general_ci'; + elseif (isset($spec['type']) && $spec['type'] == 'varchar_ascii') { + $sql .= ' COLLATE ascii_general_ci'; } } elseif (isset($spec['precision']) && isset($spec['scale'])) {