# 數據庫配置
CodeIgniter 有一個配置文件用來保存數據庫連接值(用戶名、密碼、數據庫名等等), 這個配置文件位于?application/config/database.php?。 你也可以放置不同的?**database.php**?文件到特定的環境配置文件夾里 來設置?[特定環境](http://codeigniter.org.cn/user_guide/libraries/config.html)?的數據庫連接值。
配置存放在一個多維數組里,原型如下:
~~~
$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()
);
~~~
有些數據庫驅動(譬如:PDO,PostgreSQL,Oracle,ODBC)可能需要提供完整的 DSN 字符串。 在這種情況下,你需要使用 'dsn' 配置參數,就好像使用該驅動的 PHP 原生擴展一樣。譬如:
~~~
// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';
// Oracle
$db['default']['dsn'] = '//localhost/XE';
~~~
> 注解
> 如果你沒有為需要 DSN 參數的驅動指定 DSN 字符串,CodeIgniter 將使用你提供的其他配置信息自動生成它。
> 注解
> 如果你提供了一個 DSN 字符串,但是缺少了某些配置(譬如:數據庫的字符集), 如果該配置存在在其他的配置項中,CodeIgniter 將自動在 DSN 上附加上該配置。
當主數據庫由于某些原因無法連接時,你還可以配置故障轉移(failover)。 可以像下面這樣為一個連接配置故障轉移:
~~~
$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
)
);
~~~
你可以指定任意多個故障轉移。
我們使用多維數組的原因是為了讓你隨意的存儲多個連接值的設置, 譬如:如果你有多個環境(開發、生產、測試 等等), 你能為每個環境建立獨立的連接組,并在組之間進行切換。 舉個例子,如果要設置一個 "test" 環境,你可以這樣做:
~~~
$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()
);
~~~
然后,設置位于配置文件中的?$active_group?變量,告訴系統要使用 "test" 組:
~~~
$active_group = 'test';
~~~
> 注解
> 分組的名稱 "test" 是任意的,你可以取任意的名字。默認情況下, 主連接使用 "default" 這個名稱。當然,您可以基于您的項目為它起一個更有意義的名字。
## 查詢構造器
可以通過數據庫配置文件里的?$query_builder?變量對?[查詢構造器類](http://codeigniter.org.cn/user_guide/database/query_builder.html)?進行全局的設定(啟用設成 TRUE,禁用設成 FALSE,默認是 TRUE)。 如果你不用這個類,那么你可以通過將這個變量值設置成 FALSE 來減少在數據庫類初始化時對電腦資源的消耗。
~~~
$query_builder = TRUE;
~~~
> 注解
> 一些 CodeIgniter 的類,例如 Sessions,在執行一些函數的時候需要查詢構造器的支持。
## 參數解釋:
| 配置名 | 描述 |
| --- | --- |
| **dsn** | DSN 連接字符串(該字符串包含了所有的數據庫配置信息) |
| **hostname** | 數據庫的主機名,通常位于本機,可以表示為 "localhost" |
| **username** | 需要連接到數據庫的用戶名 |
| **password** | 登陸數據庫的密碼 |
| **database** | 你需要連接的數據庫名 |
| **dbdriver** | 數據庫類型。如:mysql、postgres、odbc 等。必須為小寫字母。 |
| **dbprefix** | 當使用?[查詢構造器](http://codeigniter.org.cn/user_guide/database/query_builder.html)?查詢時,可以選擇性的為表加個前綴, 它允許在一個數據庫上安裝多個 CodeIgniter 程序。 |
| **pconnect** | TRUE/FALSE (boolean) - 是否使用持續連接 |
| **db_debug** | TRUE/FALSE (boolean) - 是否顯示數據庫錯誤信息 |
| **cache_on** | TRUE/FALSE (boolean) - 是否開啟數據庫查詢緩存, 詳情請見?[數據庫緩存類](http://codeigniter.org.cn/user_guide/database/caching.html)。 |
| **cachedir** | 數據庫查詢緩存目錄所在的服務器絕對路徑 |
| **char_set** | 與數據庫通信時所使用的字符集 |
| **dbcollat** | 與數據庫通信時所使用的字符規則, 只使用于 'mysql' 和 'mysqli' 數據庫驅動|
| **swap_pre** |替換默認的?dbprefix?表前綴,該項設置對于分布式應用是非常有用的, 你可以在查詢中使用由最終用戶定制的表前綴。 |
| **schema** | 數據庫模式,默認為 'public',用于 PostgreSQL 和 ODBC 驅動 |
| **encrypt** | 是否使用加密連接。<br/>* 'mysql' (deprecated), 'sqlsrv' and 'pdo/sqlsrv' drivers accept TRUE/FALSE<br/>* 'mysqli' and 'pdo/mysql' drivers accept an array with the following options:<br/>* 'ssl_key' - Path to the private key file<br/>* 'ssl_cert' - Path to the public key certificate file<br/>* 'ssl_ca' - Path to the certificate authority file<br/>* 'ssl_capath' - Path to a directory containing trusted CA certificats in PEM format<br/>* 'ssl_cipher' - List of?allowed?ciphers to be used for the encryption, separated by colons (':')<br/>* 'ssl_verify' - TRUE/FALSE; Whether to verify the server certificate or not ('mysqli' only)<br/> |
| **compress** | TRUE/FALSE (boolean) -是否使用客戶端壓縮協議(只用于MySQL) |
| **stricton** | TRUE/FALSE (boolean) - 是否強制使用 "Strict Mode" 連接, 在開發程序時,使用 strict SQL 是一個好習慣。 |
| **port** | 數據庫端口號,要使用這個值,你應該添加一行代碼到數據庫配置數組。`$db['default']['port'] = 5432;` |
> 注解
> 根據你使用的數據庫平臺(MySQL, PostgreSQL 等),并不是所有的參數都是必須的。譬如, 當你使用 SQLite 時,你無需指定用戶名和密碼,數據庫名稱直接是你的數據庫文件的路徑。 以上內容假設你使用的是 MySQL 數據庫。
- 歡迎使用 CodeIgniter
- 安裝說明
- 下載 CodeIgniter
- 安裝說明
- 從老版本升級
- 疑難解答
- CodeIgniter 概覽
- CodeIgniter 將從這里開始
- CodeIgniter 是什么?
- 支持特性
- 應用程序流程圖
- 模型-視圖-控制器
- 設計與架構目標
- 教程 - 內容提要
- 加載靜態內容
- 讀取新聞條目
- 創建新聞條目
- 結束語
- 常規主題
- CodeIgniter URL
- 控制器
- 保留名稱
- 視圖
- 模型
- 輔助函數
- 使用 CodeIgniter 類庫
- 創建類庫
- 使用 CodeIgniter 驅動器
- 創建驅動器
- 創建核心系統類
- 創建附屬類
- 鉤子 - 擴展框架核心
- 自動加載資源
- 公共函數
- 兼容性函數
- URI 路由
- 錯誤處理
- 網頁緩存
- 程序分析
- 以 CLI 方式運行
- 管理你的應用程序
- 處理多環境
- 在視圖文件中使用 PHP 替代語法
- 安全
- PHP 開發規范
- 類庫參考
- 基準測試類
- 緩存驅動器
- 日歷類
- 購物車類
- 配置類
- Email 類
- 加密類
- 加密類(新版)
- 文件上傳類
- 表單驗證類
- FTP 類
- 圖像處理類
- 輸入類
- Javascript 類
- 語言類
- 加載器類
- 遷移類
- 輸出類
- 分頁類
- 模板解析類
- 安全類
- Session 類
- HTML 表格類
- 引用通告類
- 排版類
- 單元測試類
- URI 類
- 用戶代理類
- XML-RPC 與 XML-RPC 服務器類
- Zip 編碼類
- 數據庫參考
- 數據庫快速入門: 示例代碼
- 數據庫配置
- 連接你的數據庫
- 查詢
- 生成查詢結果
- 查詢輔助函數
- 查詢構造器類
- 事務
- 數據庫元數據
- 自定義函數調用
- 數據庫緩存類
- 數據庫工廠類
- 數據庫工具類
- 數據庫驅動器參考
- 輔助函數參考
- 數組輔助函數
- 驗證碼輔助函數
- Cookie 輔助函數
- 日期輔助函數
- 目錄輔助函數
- 下載輔助函數
- 郵件輔助函數
- 文件輔助函數
- 表單輔助函數
- HTML 輔助函數
- 語言輔助函數
- Inflector 輔助函數
- 數字輔助函數
- 路徑輔助函數
- 安全輔助函數
- 表情輔助函數
- 字符串輔助函數
- 文本輔助函數
- 排版輔助函數
- URL 輔助函數
- XML 輔助函數
- 向 CodeIgniter 貢獻你的力量