codeigniter数据库配置必须在application/config/database.php中正确设置$active_group和5个必填参数(hostname、username、password、database、dbdriver),并根据环境调整pconnect、db_debug、char_set等开关,多环境需同步修改environment常量。

你需要在CodeIgniter项目中正确设置数据库连接参数,才能让应用正常读写数据,否则控制器调用$db类时会直接报错中断执行。
核心配置文件定位与基础结构
打开application/config/database.php文件,所有数据库配置都集中在此。该文件默认定义了一个名为$db['default']的多维数组,这是CI自动加载的主连接组。
文件顶部有$active_group = 'default';这一行,它决定了当前生效的连接组名称——【必须与$db数组中已定义的键名完全一致,大小写敏感】。
若你删掉这行或写成$active_group = 'Default';,CI将无法找到匹配连接组,启动时抛出“Undefined index: Default”致命错误。
必填的5个基础连接参数
以下字段缺一不可,否则连接立即失败:
① 'hostname' => 'localhost':数据库服务器地址,可填IP(如192.168.1.100)或域名(如db.example.com);本地开发常用127.0.0.1比localhost更稳定,避免Unix socket解析延迟。
② 'username' => 'root':数据库登录账号,不能留空字符串,哪怕密码为空也必须显式写出。
③ 'password' => 'your_pass':明文密码,CI不支持加密存储;生产环境务必确保该文件权限为640,禁止Web直接访问。
④ 'database' => 'ci_app':已存在的数据库名,CI不会自动创建库,连接前请确认该库已在MySQL中手动建立并授予权限。
⑤ 'dbdriver' => 'mysqli':驱动类型,PHP 7.0+ 必须用mysqli或pdo,mysql驱动已被彻底废弃,启用即报Fatal error: Call to undefined function mysql_connect()。
关键开关参数及其影响
方法一:持久连接控制
'pconnect' => TRUE启用后,PHP进程结束时不关闭MySQL连接,下次请求复用同一连接;但TRUE值在共享主机或短生命周期容器中易导致连接数爆满,【线上高并发场景下建议保持FALSE】。
方法二:调试开关
'db_debug' => (ENVIRONMENT !== 'production')是CI官方推荐写法,开发环境自动开启SQL错误详情,生产环境关闭防止敏感信息泄露;若硬编码为TRUE,上线后数据库密码可能随错误堆栈暴露在页面上。
方法三:字符集声明
'char_set' => 'utf8mb4'比utf8更安全,能完整存储emoji和四字节Unicode字符;若设为utf8且表使用utf8mb4_unicode_ci,中文插入可能被截断或乱码。
多环境连接组配置
第一步:在database.php中新增一个连接组
$db['staging'] = array( 'hostname' => 'staging-db.internal', 'username' => 'staging_user', 'password' => 's3cr3t!', 'database' => 'ci_staging', 'dbdriver' => 'mysqli', 'pconnect' => FALSE);
第二步:修改$active_group变量指向新组
$active_group = 'staging';
第三步:确保application/config/constants.php中ENVIRONMENT常量值为'staging',否则CI仍会加载development环境下的autoload配置,造成连接组切换失效。
这一步操作起来很简单,直接把文件拖进去就行。










