codeigniter 中多个数据库连接需为每组单独配置 db_debug,不可全局统一开关;default 组设置不影响其他组,新增组如 database_two 必须显式设 'db_debug' => true 才能调试,ci4 则改用 'dbdebug' => true 且通过 database::connect() 加载。

CodeIgniter 中开启多个数据库连接时,db_debug 不能全局统一开关,必须为每个数据库连接组单独配置。默认的 default 组调试开关只影响它自己,新增的库(如 database_two)需显式设置,否则会沿用框架默认值(通常为 FALSE),导致查错困难。
每个数据库组独立配置 db_debug
在 application/config/database.php 中,每个数据库连接数组都应包含 'db_debug' 键,并设为 TRUE 或 FALSE:
-
$db['default']['db_debug'] = TRUE;—— 主库开启调试,错误会直接输出到页面 -
$db['database_two']['db_debug'] = TRUE;—— 第二个库也开启,便于定位跨库查询问题 - 若某库用于生产环境读取,可设为
FALSE避免敏感信息泄露
避免调试信息互相干扰
当多个库同时出错时,CI 默认只显示最后执行失败的那个库的错误。为精准定位,建议:
- 在调用前手动切换并确认当前活跃连接:
$this->load->database('database_two', TRUE);返回实例后,再执行查询 - 对关键操作加日志:用
log_message('error', $this->db->last_query());记录实际 SQL - 不要依赖自动加载多个库,按需加载可减少调试混淆
CI4 的差异提醒
如果你用的是 CodeIgniter 4,配置方式不同:db_debug 已移至数据库组的 'DBDebug' 键(首字母大写),且需在 app/Config/Database.php 的对应 Group 数组中设置:
-
'DBDebug' => true,(注意是布尔值,不是字符串) - CI4 不再支持
$this->load->database()动态加载多库,改用Database::connect('group_name') - CI4 的错误堆栈更详细,但同样需要每组单独启用才生效











