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