CodeIgniter 有一個(gè)配置文件用來(lái)保存數(shù)據(jù)庫(kù)連接值(用戶名、密碼、數(shù)據(jù)庫(kù)名等等), 這個(gè)配置文件位于 application/config/database.php 。 你也可以放置不同的 database.php 文件到特定的環(huán)境配置文件夾里 來(lái)設(shè)置 特定環(huán)境 的數(shù)據(jù)庫(kù)連接值。
配置存放在一個(gè)多維數(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 字符串。 在這種情況下,你需要使用 '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)有為需要 DSN 參數(shù)的驅(qū)動(dòng)指定 DSN 字符串,CodeIgniter 將使用你提供的其他配置信息自動(dòng)生成它。
注解
如果你提供了一個(gè) DSN 字符串,但是缺少了某些配置(譬如:數(shù)據(jù)庫(kù)的字符集), 如果該配置存在在其他的配置項(xiàng)中,CodeIgniter 將自動(dòng)在 DSN 上附加上該配置。
當(dāng)主數(shù)據(jù)庫(kù)由于某些原因無(wú)法連接時(shí),你還可以配置故障轉(zhuǎn)移(failover)。 可以像下面這樣為一個(gè)連接配置故障轉(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
)
);
你可以指定任意多個(gè)故障轉(zhuǎn)移。
我們使用多維數(shù)組的原因是為了讓你隨意的存儲(chǔ)多個(gè)連接值的設(shè)置, 譬如:如果你有多個(gè)環(huán)境(開發(fā)、生產(chǎn)、測(cè)試 等等), 你能為每個(gè)環(huán)境建立獨(dú)立的連接組,并在組之間進(jìn)行切換。 舉個(gè)例子,如果要設(shè)置一個(gè) "test" 環(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()
);
然后,設(shè)置位于配置文件中的 $active_group 變量,告訴系統(tǒng)要使用 "test" 組:
$active_group = 'test';
注解
分組的名稱 "test" 是任意的,你可以取任意的名字。默認(rèn)情況下, 主連接使用 "default" 這個(gè)名稱。當(dāng)然,您可以基于您的項(xiàng)目為它起一個(gè)更有意義的名字。
可以通過(guò)數(shù)據(jù)庫(kù)配置文件里的 $query_builder 變量對(duì) 查詢構(gòu)造器類 進(jìn)行全局的設(shè)定(啟用設(shè)成 TRUE,禁用設(shè)成 FALSE,默認(rèn)是 TRUE)。 如果你不用這個(gè)類,那么你可以通過(guò)將這個(gè)變量值設(shè)置成 FALSE 來(lái)減少在數(shù)據(jù)庫(kù)類初始化時(shí)對(duì)電腦資源的消耗。
$query_builder = TRUE;
注解
一些 CodeIgniter 的類,例如 Sessions,在執(zhí)行一些函數(shù)的時(shí)候需要查詢構(gòu)造器的支持。
配置名 | 描述 |
---|---|
dsn | DSN 連接字符串(該字符串包含了所有的數(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ù)類型。如:mysql、postgres、odbc 等。必須為小寫字母。 |
dbprefix | 當(dāng)使用 查詢構(gòu)造器 查詢時(shí),可以選擇性的為表加個(gè)前綴, 它允許在一個(gè)數(shù)據(jù)庫(kù)上安裝多個(gè) CodeIgniter 程序。 |
pconnect | TRUE/FALSE (boolean) - 是否使用持續(xù)連接 |
db_debug | TRUE/FALSE (boolean) - 是否顯示數(shù)據(jù)庫(kù)錯(cuò)誤信息 |
cache_on | TRUE/FALSE (boolean) - 是否開啟數(shù)據(jù)庫(kù)查詢緩存, 詳情請(qǐng)見 數(shù)據(jù)庫(kù)緩存類。 |
cachedir | 數(shù)據(jù)庫(kù)查詢緩存目錄所在的服務(wù)器絕對(duì)路徑 |
char_set | 與數(shù)據(jù)庫(kù)通信時(shí)所使用的字符集 |
dbcollat | 與數(shù)據(jù)庫(kù)通信時(shí)所使用的字符規(guī)則, 只使用于 'mysql' 和 'mysqli' 數(shù)據(jù)庫(kù)驅(qū)動(dòng) |
swap_pre | 替換默認(rèn)的 dbprefix 表前綴,該項(xiàng)設(shè)置對(duì)于分布式應(yīng)用是非常有用的, 你可以在查詢中使用由最終用戶定制的表前綴。 |
schema | 數(shù)據(jù)庫(kù)模式,默認(rèn)為 'public',用于 PostgreSQL 和 ODBC 驅(qū)動(dòng) |
encrypt | 是否使用加密連接。 'mysql' (deprecated), 'sqlsrv' and 'pdo/sqlsrv' drivers accept TRUE/FALSE 'mysqli' and 'pdo/mysql' drivers accept an array with the following options: 'ssl_key' - Path to the private key file 'ssl_cert' - Path to the public key certificate file 'ssl_ca' - Path to the certificate authority file 'ssl_capath' - Path to a directory containing trusted CA certificats in PEM format 'ssl_cipher' - List of allowed ciphers to be used for the encryption, separated by colons (':') 'ssl_verify' - TRUE/FALSE; Whether to verify the server certificate or not ('mysqli' only) |
compress | TRUE/FALSE (boolean) -是否使用客戶端壓縮協(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ù)配置數(shù)組。$db['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ù)。
更多建議: