CodeIgniter4多数据库组名需符合PHP变量命名规范且兼顾可读性、环境区分性与团队共识;推荐按环境(default/development/testing/staging/production)或业务域(main/log/report/auth/tenant_xxx)命名,避免纯数字开头、特殊字符、保留字及随意缩写,统一用小写,并通过$defaultGroup、Database::connect()或模型$DBGroup指定使用组。

CodeIgniter4 的多数据库连接组(group)名字没有强制命名规则,但取名要兼顾可读性、环境区分性和团队共识。名字本质是数组键,只要符合 PHP 变量命名规范(字母/下划线开头,只含字母、数字、下划线),就不会报错;但真正影响开发效率的是它是否能“一眼看懂用途”。
按环境类型命名最稳妥
这是官方示例和绝大多数项目采用的方式,清晰、无歧义、便于切换:
- default:主生产库(或开发默认库),框架默认读取该组
- development:本地开发环境专用库
- testing:单元测试或 CI 流水线用的隔离库
- staging:预发布环境,结构与生产一致但数据隔离
- production:正式上线库(注意:实际部署中常通过环境变量控制,而非硬编码此名)
按业务域或数据用途命名更灵活
适合中大型项目存在多个逻辑数据库的情况,比如分库场景:
- main:核心业务表(用户、订单)
- log:日志类只写库,字段精简、引擎可选 MyISAM 或归档表
- report:报表宽表或汇总库,可能来自 ETL 同步
- auth:独立认证库(如 OAuth token、权限规则)
- tenant_xxx:多租户架构下按租户划分的连接组(需配合动态配置)
命名时必须避开的坑
这些名字看似合理,但容易引发隐性问题:
- 避免纯数字开头:如 "123_main" 不合法(PHP 数组键不支持)
- 避免空格、短横线、点号:如 "dev-db"、"test.db" 会解析失败
- 避免保留字冲突:如 "system"、"config" 虽语法合法,但易与框架内部概念混淆
- 避免过于随意的缩写:如 "db1"、"xyz" —— 半年后没人记得代表什么
- 不要依赖大小写区分:CI4 配置数组键是大小写敏感的,但不同环境文件系统行为不一,统一小写最安全
怎么在代码里指定使用哪个 group
不是改名字,而是改配置变量 $active_group:
- 在
app/Config/Database.php中设置:public $defaultGroup = 'development'; - 也可在运行时切换:
$db = \Config\Database::connect('report'); - 模型中指定:
protected $DBGroup = 'log';(该模型所有操作走 log 组)


















