Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Connection.php

function Connection::createDatabase

Same name in this branch
  1. 11.1.x core/lib/Drupal/Core/Database/Connection.php \Drupal\Core\Database\Connection::createDatabase()
  2. 11.1.x core/modules/sqlite/src/Driver/Database/sqlite/Connection.php \Drupal\sqlite\Driver\Database\sqlite\Connection::createDatabase()
  3. 11.1.x core/modules/mysql/src/Driver/Database/mysql/Connection.php \Drupal\mysql\Driver\Database\mysql\Connection::createDatabase()

Overrides \Drupal\Core\Database\Connection::createDatabase().

Parameters

string $database: The name of the database to create.

Throws

\Drupal\Core\Database\DatabaseNotFoundException

Overrides Connection::createDatabase

File

core/modules/pgsql/src/Driver/Database/pgsql/Connection.php, line 287

Class

Connection
PostgreSQL implementation of \Drupal\Core\Database\Connection.

Namespace

Drupal\pgsql\Driver\Database\pgsql

Code

public function createDatabase($database) {
    // Escape the database name.
    $database = Database::getConnection()->escapeDatabase($database);
    $db_created = FALSE;
    // Try to determine the proper locales for character classification and
    // collation. If we could determine locales other than 'en_US', try creating
    // the database with these first.
    $ctype = setlocale(LC_CTYPE, 0);
    $collate = setlocale(LC_COLLATE, 0);
    if ($ctype && $collate) {
        try {
            $this->connection
                ->exec("CREATE DATABASE {$database} WITH TEMPLATE template0 ENCODING='UTF8' LC_CTYPE='{$ctype}.UTF-8' LC_COLLATE='{$collate}.UTF-8'");
            $db_created = TRUE;
        } catch (\Exception $e) {
            // It might be that the server is remote and does not support the
            // locale and collation of the webserver, so we will try again.
        }
    }
    // Otherwise fall back to creating the database using the 'en_US' locales.
    if (!$db_created) {
        try {
            $this->connection
                ->exec("CREATE DATABASE {$database} WITH TEMPLATE template0 ENCODING='UTF8' LC_CTYPE='en_US.UTF-8' LC_COLLATE='en_US.UTF-8'");
        } catch (\Exception $e) {
            // If the database can't be created with the 'en_US' locale either,
            // we're finally throwing an exception.
            throw new DatabaseNotFoundException($e->getMessage());
        }
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal