Configuração do banco de dados
O meio principal de definir conexão é o array $database em settings.php. Como o nome indica $database permite definir múltiplas conexões — e também múltiplos targets. A conexão não abre (objeto não cria-se) até o primeiro trecho de código tentar consultá-la.
Ключ подключения
$databases['default'] // The database connection.
Ключ подключения - это уникальный идентификатор для данного соединения с базой данных. Ключ соединения должен быть уникальным для данного сайта, и всегда должно быть соединение по умолчанию, которое будет основной базой данных Drupal. На большинстве сайтов это будет единственное определенное соединение.
Цель
$databases['default']['default'] // The database target.
У данного ключа подключения должна быть одна или несколько целей. Цель - это база данных, которую можно использовать, если она доступна. Цель «default» всегда должна быть определена для каждого ключа подключения. Если запрошенная цель не определена, система автоматически вернется к значению «по умолчанию».
Основное использование целей - для первичной репликации / репликации. Целью по умолчанию является основной сервер SQL. Затем может быть определена одна или несколько целей «реплики» (обратите внимание, что в некоторых ситуациях «реплика» является единственной допустимой альтернативной целью, например, в статических запросах). Запросы, помеченные, чтобы попытаться использовать сервер реплики, если он доступен, будут пытаться получить доступ к цели «реплика». Если оно доступно, это соединение будет открыто (если оно еще не установлено), и запрос будет запущен на сервере реплики. Если нет, запрос будет выполняться вместо «основного» (основного) сервера. Это обеспечивает прозрачный запасной вариант, поэтому код может быть написан так, чтобы использовать преимущества сервера реплики, если он доступен, но все равно будет работать без сервера без изменений.
$databases syntax
Массив $database является вложенным массивом минимум трех уровней. Первый уровень определяет ключи базы данных. Второй определяет цели базы данных. Значение каждой цели - это информация о соединении для этого ключа / цели. Некоторые примеры должны прояснить это.
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'drupaldb',
'username' => 'username',
'password' => 'secret',
'host' => 'localhost',
);
Приведенный выше массив $database определяет один ключ подключения («по умолчанию») с одной целью («по умолчанию»). Это соединение использует базу данных MySQL (ключ «драйвера») на локальном узле с именем «drupaldb» с именем пользователя «username» и паролем «secret». Приведенный выше пример является типичным случаем установки Drupal с одним SQL-сервером и будет достаточным для подавляющего большинства сайтов.
Для конфигурации первичной / реплики можно определить следующее:
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'drupaldb1',
'username' => 'username',
'password' => 'secret',
'host' => 'dbserver1',
);
$databases['default']['replica'][] = array(
'driver' => 'mysql',
'database' => 'drupaldb2',
'username' => 'username',
'password' => 'secret',
'host' => 'dbserver2',
);
$databases['default']['replica'][] = array(
'driver' => 'mysql',
'database' => 'drupaldb3',
'username' => 'username',
'password' => 'secret',
'host' => 'dbserver3',
);
Essa definição fornece um servidor default e dois replicas. Note que a chave replica é array: qualquer target definido como array de informações fará escolher aleatoriamente um dos servidores para esse target a cada requisição de página — numa página todas as réplicas vão para dbserver2 e na seguinte podem ir para dbserver3.
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'drupaldb1',
'username' => 'username',
'password' => 'secret',
'host' => 'dbserver1',
);
$databases['extra']['default'] = array(
'driver' => 'sqlite',
'database' => 'files/extradb.sqlite',
);
Эта конфигурация определяет одну основную базу данных Drupal и одну дополнительную базу данных с надписью «extra», которая использует SQLite. Обратите внимание, что информация о соединении SQLite структурирована иначе, чем у MySQL. Каждый драйвер может иметь различную конфигурацию в зависимости от того, что подходит для него.
Помните, что независимо от того, сколько соединений вы определяете, Drupal не будет открывать соединение с этой базой данных, пока оно не будет фактически использовано.
Требуемый PDO
Поскольку библиотека PHP PDO теперь требуется для уровня базы данных Drupal, вам потребуется план хостинга, который включает ее для запуска Drupal.
Параметры PDO
Параметры PDO и параметры PDO для конкретного драйвера можно указать в массиве базы данных с помощью ключа 'pdo', например:
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'drupaldb',
'username' => 'username',
'password' => 'secret',
'host' => 'dbserver1',
'pdo' => array(PDO::ATTR_TIMEOUT => 2.0, PDO::MYSQL_ATTR_COMPRESS => 1),
);