Настройка базы данных
В CodeIgniter есть конфигурационный файл, позволяющий хранить значения подключения к базе данных (имя пользователя, пароль, имя базы данных и т. д.). Файл конфигурации находится по адресу app/Config/Database.php. Вы также можете задать значения подключения к базе данных в файле .env. Более подробная информация ниже.
Настройки конфигурации хранятся в свойстве класса, которое представляет собой массив с таким прототипом:
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => true,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
];
Имя свойства класса — имя подключения, которое можно использовать при подключении для указания имени группы.
Примечание
По умолчанию база данных SQLite3 расположена в папке writable. Если вы хотите изменить расположение, необходимо указать полный путь к новой папке.
Некоторые драйверы баз данных (например, PDO, PostgreSQL, Oracle, ODBC) могут потребовать предоставления полной строки DSN. В этом случае следует использовать настройку «DSN», как если бы вы использовали базовый родной PHP-расширение драйвера, например так:
// PDO $default['DSN'] = 'pgsql:host=localhost;port=5432;dbname=database_name'; // Oracle $default['DSN'] = '//localhost/XE';
Примечание
Если для драйвера, которому требуется DSN, вы не укажете строку DSN, CodeIgniter попытается создать её на основе предоставленных настроек.
Вы также можете задать Имя источника данных универсальным способом (в формате URL). В этом случае DSN должны иметь такой прототип:
$default['DSN'] = 'DBDriver://username:password@hostname:port/database';
Чтобы переопределить значения конфигурации по умолчанию при подключении с универсальной версией строки DSN, добавьте переменные конфигурации в качестве строки запроса:
// MySQLi $default['DSN'] = 'MySQLi://username:password@hostname:3306/database?charset=utf8&DBCollat=utf8_general_ci'; // Postgre $default['DSN'] = 'Postgre://username:password@hostname:5432/database?charset=utf8&connect_timeout=5&sslmode=1';
Примечание
Если вы предоставите строку DSN, в которой отсутствуют некоторые действительные настройки (например, кодировка символов базы данных), которые присутствуют в других полях конфигурации, CodeIgniter добавит их.
Вы также можете указать резервные подключения на случай, если основное подключение не сможет подключиться по какой-либо причине. Эти резервные подключения можно указать, задав резервное подключение для подключения так:
$default['failover'] = [
[
'hostname' => 'localhost1',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => true,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
],
[
'hostname' => 'localhost2',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => true,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
]
];
Вы можете указать любое количество резервных подключений.
Вы можете необязательно хранить несколько наборов значений подключения. Например, если вы запускаете несколько сред (разработки, производства, тестирования и т. д.) в рамках одной установки, вы можете настроить группу подключений для каждой из них, а затем переключаться между группами по мере необходимости. Например, чтобы настроить среду «test», сделайте так:
public $test = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => true,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'compress' => false,
'encrypt' => false,
'strictOn' => false,
'failover' => []
);
Затем, чтобы глобально указать системе использовать эту группу, вы зададите эту переменную в файле конфигурации:
$defaultGroup = 'test';
Примечание
Имя «test» произвольное. Вы можете выбрать любое имя. По умолчанию для основного подключения используется слово «default», но его также можно переименовать на что-то более релевантное вашему проекту.
Вы можете изменить файл конфигурации, чтобы определить среду и автоматически обновить значение defaultGroup на правильное, добавив необходимую логику в конструктор класса:
class Database
{
public $development = [...];
public $test = [...];
public $production = [...];
public function __construct()
{
$this->defaultGroup = ENVIRONMENT;
}
}
Настройка с файлом .env
Вы также можете сохранить значения конфигурации в файле .env с текущими настройками базы данных сервера. Вам нужно вводить только те значения, которые отличаются от значений в настройках группы по умолчанию. Значения должны быть именами, следующими этому формату, где default — имя группы:
database.default.username = 'root'; database.default.password = ''; database.default.database = 'ci4';
Как и при всех других
Описание значений:
| Имя конфигурации | Описание |
|---|---|
| dsn | Строка подключения DSN (последовательность конфигурации "все в одном"). |
| hostname | Имя хоста вашего сервера базы данных. Часто это «localhost». |
| username | Имя пользователя, используемое для подключения к базе данных. |
| password | Пароль, используемый для подключения к базе данных. |
| database | Имя базы данных, к которой вы хотите подключиться. |
| DBDriver | Тип базы данных. Например: MySQLi, Postgre и т. д. Регистр должен соответствовать имени драйвера |
| DBPrefix | Необязательное префикс таблиц, который будет добавлен к имени таблицы при выполнении запросов Query Builder. Это позволяет нескольким установкам CodeIgniter использовать одну базу данных. |
| pConnect | true/false (логическое значение) — использовать ли постоянное подключение. |
| DBDebug | true/false (логическое значение) — показывать ли ошибки базы данных. |
| charset | Кодировка символов, используемая при общении с базой данных. |
| DBCollat |
Коллирование символов, используемое при общении с базой данных Примечание Используется только в драйвере «MySQLi». |
| swapPre | Префикс таблиц по умолчанию, который следует заменить на dbprefix. Это полезно для распределенных приложений, где вы можете выполнять запросы, написанные вручную, и вам нужно, чтобы префикс оставался настраиваемым конечным пользователем. |
| schema | Схема базы данных, значение по умолчанию зависит от драйвера. Используется драйверами PostgreSQL и SQLSRV. |
| encrypt |
Использовать ли зашифрованное подключение.
|
| compress | Использовать ли сжатие клиента (только для MySQL). |
| strictOn | true/false (логическое значение) — принудительно ли использовать «жесткий режим» подключений, хорошо подходит для обеспечения строгого SQL при разработке приложения. |
| port |
Порт базы данных. Чтобы использовать это значение, необходимо добавить строку в массив конфигурации базы данных. $default['port'] = 5432; |
Примечание
В зависимости от используемой платформы базы данных (MySQL, PostgreSQL и т. д.) не все значения будут необходимы. Например, при использовании SQLite не нужно указывать имя пользователя или пароль, а имя базы данных будет путём к вашему файлу базы данных. Приведённая выше информация предполагает использование MySQL.
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/database/configuration.html