?
This document uses PHP Chinese website manual Release
CodeIgniter有一個(gè)配置文件,可讓您存儲(chǔ)數(shù)據(jù)庫(kù)連接值(用戶名,密碼,數(shù)據(jù)庫(kù)名稱等)。配置文件位于application / config / database.php。您還可以通過(guò)將database.php放置在各自的環(huán)境配置文件夾中來(lái)為特定環(huán)境設(shè)置數(shù)據(jù)庫(kù)連接值。
配置設(shè)置存儲(chǔ)在具有此原型的多維數(shù)組中:
$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() );
某些數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序(如PDO,PostgreSQL,Oracle,ODBC)可能需要提供完整的DSN字符串。如果是這樣的話,你應(yīng)該使用'dsn'配置設(shè)置,就好像你在使用驅(qū)動(dòng)程序的底層原生PHP擴(kuò)展一樣,如下所示:
// PDO$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';// Oracle$db['default']['dsn'] = '//localhost/XE';
注意
如果您沒(méi)有為需要它的驅(qū)動(dòng)程序指定DSN字符串,則CodeIgniter將嘗試使用提供的其他設(shè)置構(gòu)建它。
注意
如果您提供了一個(gè)DSN字符串,并且缺少其他配置字段中存在的一些有效設(shè)置(例如數(shù)據(jù)庫(kù)字符集),CodeIgniter會(huì)將它們附加。
當(dāng)主連接出于某種原因無(wú)法連接時(shí),您也可以為情況指定故障轉(zhuǎn)移。這些故障轉(zhuǎn)移可以通過(guò)像這樣設(shè)置連接的故障轉(zhuǎn)移來(lái)指定:
$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 ) );
您可以根據(jù)需要指定盡可能多的故障轉(zhuǎn)移。
我們使用多維數(shù)組而不是更簡(jiǎn)單的原因是允許您可選地存儲(chǔ)多組連接值。例如,如果您在單個(gè)安裝下運(yùn)行多個(gè)環(huán)境(開(kāi)發(fā),生產(chǎn),測(cè)試等),則可以為每個(gè)環(huán)境設(shè)置一個(gè)連接組,然后根據(jù)需要在組之間切換。例如,要設(shè)置“測(cè)試”環(huán)境,您可以這樣做:
$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() );
然后,要全局告訴系統(tǒng)使用該組,你可以在配置文件中設(shè)置這個(gè)變量:
$active_group = 'test';
注意
名稱'測(cè)試'是任意的。它可以是任何你想要的。默認(rèn)情況下,我們對(duì)主要連接使用了“默認(rèn)”一詞,但它也可以重命名為與您的項(xiàng)目更相關(guān)的內(nèi)容。
通過(guò)將數(shù)據(jù)庫(kù)配置文件中的$ query_builder變量設(shè)置為TRUE / FALSE(布爾值),可以全局啟用或禁用查詢生成器類。默認(rèn)設(shè)置是TRUE。如果您未使用查詢構(gòu)建器類,則將其設(shè)置為FALSE將在數(shù)據(jù)庫(kù)類初始化時(shí)使用較少的資源。
$query_builder = TRUE;
注意
某些CodeIgniter類(如會(huì)話)需要啟用Query Builder來(lái)訪問(wèn)某些功能。
名稱配置 | 描述 |
---|---|
DSN | DSN連接字符串(全合一配置順序)。 |
主機(jī)名 | 數(shù)據(jù)庫(kù)服務(wù)器的主機(jī)名。通常這是'localhost'。 |
用戶名 | 用于連接到數(shù)據(jù)庫(kù)的用戶名。 |
密碼 | 用于連接到數(shù)據(jù)庫(kù)的密碼。 |
數(shù)據(jù)庫(kù) | 您要連接到的數(shù)據(jù)庫(kù)的名稱。 |
dbdriver | 數(shù)據(jù)庫(kù)類型。即:mysqli,postgre,odbc等。必須以小寫字母指定。 |
dbprefix | 運(yùn)行查詢生成器查詢時(shí)將添加到表名稱的可選表前綴。這允許多個(gè)CodeIgniter安裝共享一個(gè)數(shù)據(jù)庫(kù)。 |
連 | TRUE / FALSE(布爾值) - 是否使用持續(xù)連接。 |
db_debug | TRUE / FALSE(布爾值) - 是否應(yīng)顯示數(shù)據(jù)庫(kù)錯(cuò)誤。 |
cache_on | TRUE / FALSE(boolean) - 是否啟用數(shù)據(jù)庫(kù)查詢緩存,另請(qǐng)參閱數(shù)據(jù)庫(kù)緩存類。 |
cachedir | 數(shù)據(jù)庫(kù)查詢緩存目錄的絕對(duì)服務(wù)器路徑。 |
char_set | 用于與數(shù)據(jù)庫(kù)通信的字符集。 |
dbcollat | 與數(shù)據(jù)庫(kù)通信時(shí)使用的字符排序規(guī)則說(shuō)明僅在'mysql'和'mysqli'驅(qū)動(dòng)程序中使用。 |
swap_pre | 應(yīng)該與dbprefix交換的默認(rèn)表前綴。這對(duì)分布式應(yīng)用程序非常有用,您可以在其中運(yùn)行手動(dòng)編寫的查詢,并且需要前綴仍可由最終用戶自定義。 |
模式 | 數(shù)據(jù)庫(kù)模式默認(rèn)為'public'。由PostgreSQL和ODBC驅(qū)動(dòng)程序使用。 |
加密 | 是否使用加密連接。'mysql'(已棄用),'sqlsrv'和'pdo / sqlsrv'驅(qū)動(dòng)程序接受TRUE / FALSE'mysqli'和'pdo / mysql'驅(qū)動(dòng)程序接受帶有以下選項(xiàng)的數(shù)組:'ssl_key' - 私鑰文件' ssl_cert' - 公鑰證書文件'ssl_ca'的路徑 - 證書頒發(fā)機(jī)構(gòu)文件'ssl_capath'的路徑 - 包含PEM格式'ssl_cipher'中包含可信CA證書的目錄的路徑 - 用于加密的允許密碼列表,以冒號(hào)分隔(':')'ssl_verify' - TRUE / FALSE; 是否驗(yàn)證服務(wù)器證書(僅限'mysqli') |
壓縮 | 是否使用客戶端壓縮(僅限MySQL)。 |
stricton | TRUE / FALSE(布爾值) - 是否強(qiáng)制執(zhí)行“嚴(yán)格模式”連接,有助于確保在開(kāi)發(fā)應(yīng)用程序時(shí)執(zhí)行嚴(yán)格的SQL。 |
港口 | 數(shù)據(jù)庫(kù)端口號(hào)。要使用此值,您必須將一行添加到數(shù)據(jù)庫(kù)配置數(shù)組中。$ db'default'= 5432; |
'mysql'(不建議使用),'sqlsrv'和'pdo / sqlsrv'驅(qū)動(dòng)程序接受TRUE / FALSE
'mysqli'和'pdo / mysql'驅(qū)動(dòng)程序接受具有以下選項(xiàng)的數(shù)組:
'ssl_key' - 私鑰文件的路徑
'ssl_cert' - 公鑰證書文件的路徑
'ssl_ca' - 證書頒發(fā)機(jī)構(gòu)文件的路徑
'ssl_capath' - 包含PEM格式的可信CA認(rèn)證的目錄的路徑
'ssl_cipher' - 允許用于加密的密碼列表,用冒號(hào)分隔(':')
'ssl_verify' - TRUE / FALSE; 是否驗(yàn)證服務(wù)器證書(僅限'mysqli')
** compress **是否使用客戶端壓縮(僅限MySQL)。** stricton ** TRUE / FALSE(布爾值) - 是否強(qiáng)制“嚴(yán)格模式”連接,有利于在開(kāi)發(fā)應(yīng)用程序時(shí)確保嚴(yán)格的SQL。**端口**數(shù)據(jù)庫(kù)端口號(hào)。要使用此值,您必須將一行添加到數(shù)據(jù)庫(kù)配置數(shù)組中。
$db'default' = 5432;
注意
根據(jù)你使用的數(shù)據(jù)庫(kù)平臺(tái)(MySQL,PostgreSQL等),并不需要所有的值。例如,使用SQLite時(shí),不需要提供用戶名或密碼,數(shù)據(jù)庫(kù)名稱將成為數(shù)據(jù)庫(kù)文件的路徑。上面的信息假定您正在使用MySQL。