function install_database_errors

Same name in other branches
  1. 9 core/includes/install.core.inc \install_database_errors()
  2. 8.9.x core/includes/install.core.inc \install_database_errors()
  3. 10 core/includes/install.core.inc \install_database_errors()
  4. 11.x core/includes/install.core.inc \install_database_errors()

Checks a database connection and returns any errors.

2 calls to install_database_errors()
install_settings_form_validate in includes/install.core.inc
Form validation handler for install_settings_form().
install_verify_settings in includes/install.core.inc
Verifies the existing settings in settings.php.

File

includes/install.core.inc, line 972

Code

function install_database_errors($database, $settings_file) {
    global $databases;
    $errors = array();
    // Check database type.
    $database_types = drupal_get_database_types();
    $driver = $database['driver'];
    if (!isset($database_types[$driver])) {
        $errors['driver'] = st("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.", array(
            '%settings_file' => $settings_file,
            '@drupal' => drupal_install_profile_distribution_name(),
            '%driver' => $driver,
        ));
    }
    else {
        // Run driver specific validation
        $errors += $database_types[$driver]->validateDatabaseSettings($database);
        // Run tasks associated with the database type. Any errors are caught in the
        // calling function.
        $databases['default']['default'] = $database;
        // Just changing the global doesn't get the new information processed.
        // We tell tell the Database class to re-parse $databases.
        Database::parseConnectionInfo();
        try {
            db_run_tasks($driver);
        } catch (DatabaseTaskException $e) {
            // These are generic errors, so we do not have any specific key of the
            // database connection array to attach them to; therefore, we just put
            // them in the error array with standard numeric keys.
            $errors[$driver . '][0'] = $e->getMessage();
        }
    }
    return $errors;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.