codeigniter数据库配置核心参数包括hostname、username、password、database四要素,需确保地址真实、账号权限匹配、库已存在;dbdriver应选mysqli,char_set与dbcollat须设为utf8mb4及对应校对规则,db_debug开发期开、生产期关。

CodeIgniter 的数据库配置文件(application/config/database.php)是连接应用与数据的桥梁,参数看似简单,但每个都直接影响连接稳定性、查询安全和字符显示效果。新手常因填错一两个值导致“无法连接”或“中文乱码”,其实关键就集中在几个核心参数上。
hostname、username、password、database:基础连接四要素
这四个是建立数据库连接最直接的凭据:
-
hostname:不一定是
localhost;在 Docker 环境中可能是服务名(如mysql),共享主机则常为 IP 或域名(如10.0.2.2或db.example.com) -
username 和 password:必须是 MySQL 用户账号,不是系统登录账户;若用 root,务必确保该用户在对应 host 下有权限(例如
'root'@'%') - database:数据库名必须已存在;CI 不会自动创建库,首次运行前需手动建库并赋权
dbdriver 和 dbprefix:驱动类型与表名前缀的实际影响
dbdriver 决定底层如何通信,选错会导致整个 DB 类加载失败:
- 推荐用
mysqli(PHP 7+ 默认,支持预处理、长连接);pdo更灵活但需额外开启扩展且配置略复杂 -
mysql已被 PHP 废弃,CI 3.x 起不再支持,强行使用会报致命错误 -
dbprefix 是可选但实用的参数:设为
'ci_'后,$this->db->get('user')实际查的是ci_user表;所有 Active Record 方法(如insert()、where())都会自动识别前缀,无需手动拼接
char_set 和 dbcollat:解决中文乱码的关键组合
仅设置数据库建库时用 utf8mb4 并不够,CI 层必须同步声明:
-
char_set 应设为
'utf8mb4'(不是'utf8');后者在 MySQL 中实际是utf8mb3,不支持 emoji 和部分生僻汉字 -
dbcollat 必须匹配字符集,常见配对是
'utf8mb4_unicode_ci'或'utf8mb4_general_ci';若前后不一致,可能导致 ORDER BY 排序异常或 LIKE 模糊查询失效 - 还需确认 MySQL 服务端配置:
my.cnf中character-set-server = utf8mb4和collation-server = utf8mb4_unicode_ci
db_debug 和 pconnect:开发与生产环境的差异化配置
这两个参数关系到调试效率和服务器资源占用:
-
db_debug:开发时设为
TRUE,出错会显示完整 SQL 和错误信息;上线后务必改为FALSE,避免泄露敏感结构 -
pconnect:设为
TRUE启用持久连接,可减少频繁建连开销;但在高并发或连接池管理不善的环境下,易引发“too many connections”错误,一般建议保持默认FALSE - 搭配使用
'save_queries' => TRUE(开发期)可记录执行过的 SQL,便于排查慢查询;生产环境应关闭











