©
本文档使用 PHP中文网手册 发布
CodeIgniter有一个配置文件,可让您存储数据库连接值(用户名,密码,数据库名称等)。配置文件位于application / config / database.php。您还可以通过将database.php放置在各自的环境配置文件夹中来为特定环境设置数据库连接值。
配置设置存储在具有此原型的多维数组中:
$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字符串,则CodeIgniter将尝试使用提供的其他设置构建它。
注意
如果您提供了一个DSN字符串,并且缺少其他配置字段中存在的一些有效设置(例如数据库字符集),CodeIgniter会将它们附加。
当主连接出于某种原因无法连接时,您也可以为情况指定故障转移。这些故障转移可以通过像这样设置连接的故障转移来指定:
$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 ) );
您可以根据需要指定尽可能多的故障转移。
我们使用多维数组而不是更简单的原因是允许您可选地存储多组连接值。例如,如果您在单个安装下运行多个环境(开发,生产,测试等),则可以为每个环境设置一个连接组,然后根据需要在组之间切换。例如,要设置“测试”环境,您可以这样做:
$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';
注意
名称'测试'是任意的。它可以是任何你想要的。默认情况下,我们对主要连接使用了“默认”一词,但它也可以重命名为与您的项目更相关的内容。
通过将数据库配置文件中的$ query_builder变量设置为TRUE / FALSE(布尔值),可以全局启用或禁用查询生成器类。默认设置是TRUE。如果您未使用查询构建器类,则将其设置为FALSE将在数据库类初始化时使用较少的资源。
$query_builder = TRUE;
注意
某些CodeIgniter类(如会话)需要启用Query Builder来访问某些功能。
名称配置 | 描述 |
---|---|
DSN | DSN连接字符串(全合一配置顺序)。 |
主机名 | 数据库服务器的主机名。通常这是'localhost'。 |
用户名 | 用于连接到数据库的用户名。 |
密码 | 用于连接到数据库的密码。 |
数据库 | 您要连接到的数据库的名称。 |
dbdriver | 数据库类型。即:mysqli,postgre,odbc等。必须以小写字母指定。 |
dbprefix | 运行查询生成器查询时将添加到表名称的可选表前缀。这允许多个CodeIgniter安装共享一个数据库。 |
连 | TRUE / FALSE(布尔值) - 是否使用持续连接。 |
db_debug | TRUE / FALSE(布尔值) - 是否应显示数据库错误。 |
cache_on | TRUE / FALSE(boolean) - 是否启用数据库查询缓存,另请参阅数据库缓存类。 |
cachedir | 数据库查询缓存目录的绝对服务器路径。 |
char_set | 用于与数据库通信的字符集。 |
dbcollat | 与数据库通信时使用的字符排序规则说明仅在'mysql'和'mysqli'驱动程序中使用。 |
swap_pre | 应该与dbprefix交换的默认表前缀。这对分布式应用程序非常有用,您可以在其中运行手动编写的查询,并且需要前缀仍可由最终用户自定义。 |
模式 | 数据库模式默认为'public'。由PostgreSQL和ODBC驱动程序使用。 |
加密 | 是否使用加密连接。'mysql'(已弃用),'sqlsrv'和'pdo / sqlsrv'驱动程序接受TRUE / FALSE'mysqli'和'pdo / mysql'驱动程序接受带有以下选项的数组:'ssl_key' - 私钥文件' ssl_cert' - 公钥证书文件'ssl_ca'的路径 - 证书颁发机构文件'ssl_capath'的路径 - 包含PEM格式'ssl_cipher'中包含可信CA证书的目录的路径 - 用于加密的允许密码列表,以冒号分隔(':')'ssl_verify' - TRUE / FALSE; 是否验证服务器证书(仅限'mysqli') |
压缩 | 是否使用客户端压缩(仅限MySQL)。 |
stricton | TRUE / FALSE(布尔值) - 是否强制执行“严格模式”连接,有助于确保在开发应用程序时执行严格的SQL。 |
港口 | 数据库端口号。要使用此值,您必须将一行添加到数据库配置数组中。$ db'default'= 5432; |
'mysql'(不建议使用),'sqlsrv'和'pdo / sqlsrv'驱动程序接受TRUE / FALSE
'mysqli'和'pdo / mysql'驱动程序接受具有以下选项的数组:
'ssl_key' - 私钥文件的路径
'ssl_cert' - 公钥证书文件的路径
'ssl_ca' - 证书颁发机构文件的路径
'ssl_capath' - 包含PEM格式的可信CA认证的目录的路径
'ssl_cipher' - 允许用于加密的密码列表,用冒号分隔(':')
'ssl_verify' - TRUE / FALSE; 是否验证服务器证书(仅限'mysqli')
** compress **是否使用客户端压缩(仅限MySQL)。** stricton ** TRUE / FALSE(布尔值) - 是否强制“严格模式”连接,有利于在开发应用程序时确保严格的SQL。**端口**数据库端口号。要使用此值,您必须将一行添加到数据库配置数组中。
$db'default' = 5432;
注意
根据你使用的数据库平台(MySQL,PostgreSQL等),并不需要所有的值。例如,使用SQLite时,不需要提供用户名或密码,数据库名称将成为数据库文件的路径。上面的信息假定您正在使用MySQL。