You are here

function install_database_errors in Drupal 9

Same name and namespace in other branches
  1. 8 core/includes/install.core.inc \install_database_errors()
  2. 7 includes/install.core.inc \install_database_errors()

Checks a database connection and returns any errors.

3 calls to install_database_errors()
install_check_requirements in core/includes/install.core.inc
Checks installation requirements and reports any errors.
install_verify_database_settings in core/includes/install.core.inc
Verifies that settings.php specifies a valid database connection.
SiteSettingsForm::getDatabaseErrors in core/lib/Drupal/Core/Installer/Form/SiteSettingsForm.php
Get any database errors and links them to a form element.

File

core/includes/install.core.inc, line 1192
API functions for installing Drupal.

Code

function install_database_errors($database, $settings_file) {
  $errors = [];

  // Check database type.
  $database_types = drupal_get_database_types();
  $driver = $database['driver'];
  if (!isset($database_types[$driver])) {
    $errors['driver'] = t("In your %settings_file file you have configured @drupal to use a %driver server, however your PHP installation currently does not support this database type.", [
      '%settings_file' => $settings_file,
      '@drupal' => drupal_install_profile_distribution_name(),
      '%driver' => $driver,
    ]);
  }
  else {

    // Run driver specific validation
    $errors += $database_types[$driver]
      ->validateDatabaseSettings($database);
    if (!empty($errors)) {

      // No point to try further.
      return $errors;
    }

    // Run tasks associated with the database type. Any errors are caught in the
    // calling function.
    Database::addConnectionInfo('default', 'default', $database);
    $errors = db_installer_object($driver, $database['namespace'] ?? NULL)
      ->runTasks();
  }
  return $errors;
}