W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
CodeIgniter 有一個用來保存數(shù)據(jù)庫配置的文件(用戶名,密碼,數(shù)據(jù)庫名等),這個配置文件位于 application/Config/Database.php。你也可以在 .env 文件里配置數(shù)據(jù)庫連接參數(shù)。下面來看看詳細配置信息。
配置信息是一個數(shù)組,存儲在類的屬性里面,原型如下:
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => TRUE,
'DBDebug' => TRUE,
'cacheOn' => FALSE,
'cacheDir' => '',
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'strictOn' => FALSE,
'failover' => array(),
];
類的屬性名稱就是連接名稱,并且在連接時可以作為指定配置組名稱使用。
有些數(shù)據(jù)庫驅(qū)動(例如:PDO,PostgreSQL,Oracle,ODBC)可能需要提供完整的 DNS 信息。在這種情況下,你需要使用 DNS 配置參數(shù),就像使用該驅(qū)動的原生 PHP 擴展一樣,例如:
// PDO
$default['DSN'] = 'pgsql:host=localhost;port=5432;dbname=database_name';
// Oracle
$default['DSN'] = '//localhost/XE';
注解
如果你沒有指定 DNS 驅(qū)動需要的參數(shù)信息,CodeIgniter 將使用你提供的其它配置信息自動構(gòu)造它。
如果你提供了一個 DNS 參數(shù),但是缺少了某些配置(例如:數(shù)據(jù)庫的字符集),若該配置存在在其它的配置項中,CodeIgniter 將自動在 DNS 上附加上該配置。
當主數(shù)據(jù)庫由于某些原因無法連接時,你可以配置多個災備數(shù)據(jù)庫。例如可以像下面這樣為一個連接配置災備數(shù)據(jù)庫:
$default['failover'] = [
[
'hostname' => 'localhost1',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => TRUE,
'DBDebug' => TRUE,
'cacheOn' => FALSE,
'cacheDir' => '',
'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,
'cacheOn' => FALSE,
'cacheDir' => '',
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'strictOn' => FALSE
]
];
你可以指定任意多個災備數(shù)據(jù)庫配置。
你可以選擇性地存儲多組連接信息。例如,在一個安裝實例里面運行多個環(huán)境(開發(fā)、生產(chǎn)、測試等),你可以為每個環(huán)境配置連接組,然后在組之間進行切換。舉個例子:若要設(shè)置一個 ‘test’ 環(huán)境,你可以這么做:
public $test = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => TRUE,
'DBDebug' => TRUE,
'cacheOn' => FALSE,
'cacheDir' => '',
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'compress' => FALSE,
'encrypt' => FALSE,
'strictOn' => FALSE,
'failover' => array()
);
然后,修改該配置文件中的屬性值,告知系統(tǒng)使用該組信息:
$defaultGroup = 'test';
注解
組名稱 ‘test’ 是任意的。它可以是你想要的任意名稱。默認情況下,主連接使用 ‘default’ 這個名稱,但你也可以起一個與你項目更加相關(guān)的名稱。
你可以修改配置文件里面類的構(gòu)造函數(shù),讓它自動檢測運行環(huán)境并將 ‘defaultGroup’ 更新為正確的值:
class Database
{
public $development = [...];
public $test = [...];
public $production = [...];
public function __construct()
{
$this->defaultGroup = ENVIRONMENT;
}
}
你也可以將當前服務(wù)器的數(shù)據(jù)庫配置保存到 .env
文件 中。你只需要在默認配置組中輸入你想要變更的值。該值在 default
組中的格式為:
database.default.username = 'root';
database.default.password = '';
database.default.database = 'ci4';
其它信息
配置名 | 描述 |
---|---|
dsn | DNS 連接字符串 (該字符串包含了連接數(shù)據(jù)庫的全部配置信息) |
hostname | 數(shù)據(jù)庫的主機名,通常為本機的 ‘localhost’ |
username | 連接數(shù)據(jù)庫的用戶名 |
password | 連接數(shù)據(jù)庫的密碼 |
database | 需要連接的數(shù)據(jù)庫名 |
DBDriver | 數(shù)據(jù)庫類型,如:MySQLi、Postgre等。大小寫必須與驅(qū)動名匹配 |
DBPrefix | 當使用 查詢構(gòu)造器 查詢時,可以選擇性的為表加個前綴,它允許多個 CodeIgniter 程序共用一個數(shù)據(jù)庫 |
pConnect | TRUE/FALSE (boolean) - 是否使用持續(xù)連接 |
DBDebug | TRUE/FALSE (boolean) - 是否顯示數(shù)據(jù)庫錯誤信息 |
cacheOn | TRUE/FALSE (boolean) - 是否開啟數(shù)據(jù)庫查詢緩存 |
cacheDir | 數(shù)據(jù)庫查詢緩存目錄,服務(wù)器絕對路徑 |
charset | 與數(shù)據(jù)庫通信時所使用的字符集 |
DBCollat | 與數(shù)據(jù)庫通信時所使用的字符集規(guī)則(只用于 ‘MySQLi’ 數(shù)據(jù)庫驅(qū)動) |
swapPre | 替換默認的 dbprefix 表前綴,該項設(shè)置對于分布式應(yīng)用是非常有用的, 你可以在查詢中使用由最終用戶定制的表前綴。 |
schema | 默認數(shù)據(jù)庫模式為 ‘public’,用于 PostgreSQL 和 ODBC 驅(qū)動 |
encrypt | 是否是用加密連接 |
‘sqlsrv’ 和 ‘pdo/sqlsrv’ 驅(qū)動接受 TRUE/FALSE | |
‘MySQLi’ 和 ‘pdo/mysql’ 驅(qū)動接受一個數(shù)組,選項如下: | |
‘ssl_key’ - 私鑰文件存放路徑 | |
‘ssl_cert’ - 公鑰證書文件存放路徑 | |
‘ssl_ca’ - CA證書授權(quán)文件路徑 | |
‘ssl_capath’ - PEM格式的受信任CA證書存放目錄 | |
‘ssl_cipher’ - 允許 使用的加密算法列表,多項用 (‘:’) 分割 | |
‘ssl_verify’ - TRUE/FALSE; 是否驗證服務(wù)器的證書 (僅限 MySQLi) | |
compress | 是否使用客戶端壓縮協(xié)議(只用于 MySQL) |
strictOn | TRUE/FALSE (boolean) - 是否強制使用 “Strict Mode” 連接。在程序開發(fā)時,使用 strict SQL 是一個好習慣 |
port | 數(shù)據(jù)庫端口號。 要使用這個值,你應(yīng)該添加以下一行代碼到數(shù)據(jù)庫配置組中 $default['port'] = 5432; |
注解
根據(jù)你使用的數(shù)據(jù)庫平臺(MySQL、PostgreSQL等)不是所有參數(shù)都要配置。例如,當你使用 SQLite 時,你無需指定用戶名和密碼,數(shù)據(jù)庫名稱是你的數(shù)據(jù)庫文件路徑。以上內(nèi)容假設(shè)你使用的是 MySQL 數(shù)據(jù)庫。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: