ThinkPHP6废弃TP5的application/database.php数组配置,改用config/database.php多级结构,支持多连接、读写分离、连接池、.env环境变量、驱动解耦及严格模式。

配置文件位置与格式
ThinkPHP5:配置文件固定为 application/database.php(或模块下同名文件),返回一个纯数组:return [ 'type' => 'mysql', 'hostname' => '127.0.0.1', ... ];
不支持环境变量、不区分连接名,默认仅一套主配置。
ThinkPHP6:配置统一收口到 config/database.php,返回的是包含 'connections' 子数组的多维结构:return [ 'default' => 'mysql', 'connections' => [ 'mysql' => [ 'type' => 'mysql', ... ] ] ];
支持多连接定义(如读写分离用 'read'/'write')、默认连接可动态切换。
连接管理机制升级
- TP6 原生支持读写分离,只需在
connections.mysql下配置'read'和'write'子项,框架自动路由 - TP6 引入连接池概念(需配合 Swoole 或 Hyperf 等协程环境),TP5 完全无此能力
- TP6 的 PDO 实例可复用、支持连接事件(
onConnect)、连接健康检查,TP5 仅基础 PDO 封装
环境适配与扩展性
- TP6 配置支持通过
.env文件注入(如DB_HOST=127.0.0.1),并在config/database.php中用Env::get('DB_HOST')读取;TP5 不内置 .env 支持 - TP6 允许按环境加载不同配置(如
config/database_dev.php),TP5 需手动判断APP_DEBUG - TP6 数据库驱动解耦为独立扩展包(如
topthink/think-swoole可插拔集成协程 MySQL),TP5 驱动硬编码在核心中
兼容性与迁移提示
- TP6 不再识别
application/database.php,旧项目升级必须将配置迁移至config/database.php并调整键名层级 - TP6 删除了 TP5 中的
db_config助手函数,统一使用Db::connect('mysql')或依赖注入 - TP6 默认开启严格模式和 SQL 日志(开发环境),TP5 需手动设置
'debug' => true



















