function 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 286
Class
- Connection
- PostgreSQL implementation of \Drupal\Core\Database\Connection.
Namespace
Drupal\pgsql\Driver\Database\pgsqlCode
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());
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.