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 @@ -87,7 +87,7 @@ * {@inheritdoc} */ public static function open(array &$connection_options = array()) { - if (isset($connection_options['#dsn_utf8_fallback']) && $connection_options['#dsn_utf8_fallback'] === TRUE) { + if (isset($connection_options['_dsn_utf8_fallback']) && $connection_options['_dsn_utf8_fallback'] === TRUE) { // Only used during the installer version check, as a fallback from utf8mb4. $charset = 'utf8'; } diff -u b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php --- b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php +++ b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php @@ -77,7 +77,7 @@ $info_copy = $info; // Set a flag to fall back to utf8. Note: this flag should only be // used here and is for internal use only. - $info_copy['default']['#dsn_utf8_fallback'] = TRUE; + $info_copy['default']['_dsn_utf8_fallback'] = TRUE; // In order to change the Database::$databaseInfo array, we need to // remove the active connection, then re-add it with the new info. Database::removeConnection('default'); only in patch2: unchanged: --- a/core/lib/Drupal/Core/Database/Database.php +++ b/core/lib/Drupal/Core/Database/Database.php @@ -298,6 +298,28 @@ } /** + * Validates that database settings array does not contain any options + * meant for internal use only. + * + * @param array $databases + * A multi-dimensional array specifying database connection parameters, as + * defined in settings.php. + * + * @throws \Drupal\Core\Database\InvalidDatabaseSettingException + */ + final public static function validateDatabaseSettings(array $databases) { + foreach ($databases as $key => $targets) { + foreach ($targets as $target => $info) { + foreach (array_keys($info) as $settings_key) { + if (0 === strpos($settings_key, '_')) { + throw new InvalidDatabaseSettingException('The ' . $settings_key . ' database setting is for internal use only.'); + } + } + } + } + } + + /** * Rename a connection and its corresponding connection information. * * @param string $old_key only in patch2: unchanged: --- /dev/null +++ b/core/lib/Drupal/Core/Database/InvalidDatabaseSettingException.php @@ -0,0 +1,12 @@ +