# 数据库配置
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 贡献你的力量