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