Spec-Zone.ru › CodeIgniter 3

Настройка базы данных

CodeIgniter имеет файл конфигурации, который позволяет хранить значения подключения к базе данных (имя пользователя, пароль, имя базы данных и т. д.). Файл конфигурации расположен в application/config/database.php. Также можно задать значения подключения к базе данных для конкретных средах, поместив database.php в соответствующую папку конфигурации среды.

Настройки конфигурации хранятся в многомерном массиве с таким прототипом:

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

Некоторые драйверы баз данных (такие как PDO, PostgreSQL, Oracle, ODBC) могут потребовать предоставления полной строки DSN. В этом случае следует использовать настройку «dsn», как если бы вы использовали родное расширение PHP драйвера, например так:

// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';

// Oracle
$db['default']['dsn'] = '//localhost/XE';

Примечание

Если вы не укажете строку DSN для драйвера, который её требует, CodeIgniter попытается создать её на основе остальных предоставленных настроек.

Примечание

Если вы предоставите строку DSN, в которой отсутствуют некоторые допустимые настройки (например, кодировка символов базы данных), которые присутствуют в других полях конфигурации, CodeIgniter добавит их.

Также можно указать резервные подключения для случаев, когда основное подключение по какой-то причине не может подключиться. Эти резервные подключения можно указать, задав резервное подключение для соединения так:

$db['default']['failover'] = array(
                array(
                        'hostname' => 'localhost1',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                ),
                array(
                        'hostname' => 'localhost2',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                )
        );

Вы можете указать любое количество резервных подключений.

Мы используем многомерный массив, а не более простой, чтобы иметь возможность хранить несколько наборов значений подключения. Если, например, вы запускаете несколько сред (разработки, производства, тестирования и т. д.) в рамках одной установки, вы можете настроить группу подключений для каждой из них, а затем переключаться между группами по мере необходимости. Например, чтобы настроить среду «test», выполните следующее:

$db['test'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'compress' => FALSE,
        'encrypt' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

Затем, чтобы глобально указать системе использовать эту группу, задайте эту переменную в файле конфигурации:

$active_group = 'test';

Примечание

Имя «test» условно. Можно использовать любое имя. По умолчанию мы использовали слово «default» для основного подключения, но его также можно переименовать на что-то более подходящее для вашего проекта.

Конструктор запросов

Класс Конструктор запросов глобально включен или выключен путем установки переменной $query_builder в файле конфигурации базы данных в TRUE/FALSE (булево). Значение по умолчанию — TRUE. Если вы не используете класс конструктора запросов, установка значения FALSE уменьшит использование ресурсов при инициализации классов базы данных.

$query_builder = TRUE;

Примечание

некоторые классы CodeIgniter, такие как сессии, требуют включенного Конструктора запросов для доступа к определённым функциям.

Описание значений:

Имя настройки Описание
dsn Строка подключения DSN (конфигурация в одном месте).
hostname Имя хоста сервера базы данных. Часто это «localhost».
username Имя пользователя для подключения к базе данных.
password Пароль для подключения к базе данных.
database Имя базы данных, к которой необходимо подключиться.
dbdriver Тип базы данных. Например: mysqli, postgre, odbc и т. д. Должен быть указан строчными буквами.
dbprefix Необязательное префикс таблиц, которое будет добавлено к имени таблицы при выполнении запросов с Конструктора запросов. Это позволяет нескольким установкам CodeIgniter совместно использовать одну базу данных.
pconnect TRUE/FALSE (булево) – Использовать ли постоянное подключение.
db_debug TRUE/FALSE (булево) – Выводить ли ошибки базы данных.
cache_on TRUE/FALSE (булево) – Включено ли кеширование запросов к базе данных, см. также Класс кеширования базы данных.
cachedir Абсолютный путь к каталогу кеширования запросов базы данных на сервере.
char_set Кодировка символов, используемая при общении с базой данных.
dbcollat

Кодировка сортировки символов, используемая при общении с базой данных.

Примечание

Используется только в драйверах «mysql» и «mysqli».

swap_pre Префикс таблиц по умолчанию, который должен быть заменён на dbprefix. Это полезно для распределённых приложений, где вы можете запускать запросы, написанные вручную, и при этом префикс должен оставаться настраиваемым для конечного пользователя.
schema Схема базы данных, по умолчанию «public». Используется драйверами PostgreSQL и ODBC.
encrypt

Использовать ли зашифрованное соединение.

  • Драйверы ‘mysql’ (устарел), ‘sqlsrv’ и ‘pdo/sqlsrv’ принимают TRUE/FALSE
  • Драйверы ‘mysqli’ и ‘pdo/mysql’ принимают массив со следующими параметрами:
    • ‘ssl_key’ – Путь к файлу закрытого ключа
    • ‘ssl_cert’ – Путь к файлу открытого сертификата
    • ‘ssl_ca’ – Путь к файлу сертификата центра сертификации
    • ‘ssl_capath’ – Путь к каталогу, содержащему сертификаты доверенных центров сертификации в формате PEM
    • ‘ssl_cipher’ – Список разрешенных шифров, используемых для шифрования, разделенных двоеточием (’:’)
    • ‘ssl_verify’ – TRUE/FALSE; Проверять ли сертификат сервера или нет («mysqli» только)
compress Использовать ли сжатие клиента (только MySQL).
stricton TRUE/FALSE (булево) – Включить ли «жесткий режим» подключения, что хорошо для обеспечения строгой работы SQL при разработке приложения.
port

Номер порта базы данных. Чтобы использовать это значение, необходимо добавить строку в массив конфигурации базы данных.

$db['default']['port'] = 5432;

Примечание

В зависимости от используемой платформы базы данных (MySQL, PostgreSQL и т. д.) не все значения будут необходимы. Например, при использовании SQLite не нужно указывать имя пользователя или пароль, а имя базы данных будет путём к файлу вашей базы данных. Приведённая выше информация предполагает использование MySQL.

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/database/configuration.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API