ThinkPHP 6 数据库配置文件迁移 5.1 差异【对照】
PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。
ThinkPHP6数据库配置相比5.1改动显著:配置文件从单文件变为拆分分层且依赖.env;DSN连接被移除,改用数组配置;读写分离升级为模型绑定与部署模式;迁移命令需手动安装扩展并注册。需注意.env文件必须存在且命名准确,多库配置依赖连接名,从库配置须为二维数组,迁移文件不兼容。
先说几个核心判断:ThinkPHP 6 的数据库配置,跟 TP5.1 相比,改动幅度相当大,绝不是简单复制粘贴旧版配置文件就能搞定的事。从结构到逻辑,再到扩展支持,底层逻辑都变了样。如果直接迁移,大概率会遇到连库失败、读写分离不生效、迁移命令报错这类问题,甚至环境变量都读不出来。

所以,这篇文章把几个关键差异点拆开来讲,希望能帮大家少走弯路。
配置文件结构:从单文件大数组转向拆分+分层覆盖
TP5.1 时代,一个 database.php 文件搞定一切,所有数据库连接写在一个大数组里返回就行。但到了 TP6,这套玩法就彻底变了——配置必须按功能拆分,而且依赖 .env 文件来做运行时的动态覆盖。
- TP5.1 里直接写
'hostname' => 'localhost'没问题,TP6 则必须写成'hostname' => env('DB_HOST', 'localhost'),否则env()函数读不到值。 - 还有一点很容易踩坑:
.env文件必须存在,且命名必须准确,不能是.env.local这种变体,否则环境变量加载会失败。 - 如果你新增了自定义配置,比如
config/oss.php,它不会自动加载,需要在config/autoload.php里显式声明return ['oss'];才行。
数据库连接方式:DSN 彻底退场,全转向数组配置
TP5.1 支持 DSN 字符串连接,比如 mysql://root:123@127.0.0.1:3306/db#utf8,用起来很灵活。但 TP6 已经彻底移除了这个能力,所有连接必须通过数组定义,并且要在 config/database.php 中显式声明连接标识。
- 以前习惯用
Db::connect('mysql://...')这种写法的,在 TP6 里会直接报错。现在必须改成Db::connect('mysql'),同时确保database.connections.mysql下有对应的配置数组。 - 多库配置也不再靠 DSN 来区分,而是靠连接名,比如
'sys_db'、'log_db',在代码各处显式传入即可。 - 特别要留意的是,TP6 不再把
default键当作默认连接名,实际生效的是database.default配置项的值。
读写分离机制:从 SQL 类型判断升级为模型绑定+部署模式
TP5.1 的读写分离,靠的是 'read_master' => true 这个开关,逻辑相对简单,仅对 select 类查询尝试走从库。但可控性也差,很多场景下不够精细。TP6 则改成了基于 deploy 和 rw_separate 的模型级路由策略,灵活性大幅提升,但配置复杂度也上来了。
- 举个典型例子:在 TP5.1 中,
where()->find()和where()->value()行为一致,都会走从库(如果开启了读写分离)。但在 TP6 中,后者可能绕过从库,因为底层调用的是query方法,而非select。 - 从库配置必须是二维数组格式:
'sla ve' => [['host' => 's1'], ['host' => 's2']]。如果写成了一维数组,系统会静默失败,但不会报错,排查起来很头疼。 - 另外,TP6 默认启用了连接池,主从连接会分别缓存。升级后一定要检查一下,高并发场景下从库连接数是否出现了异常飙升。
迁移与扩展支持:迁移命令需手动装配,不再内置
TP5.1 自带 think migrate 命令,而且默认支持多连接(虽然有一些缺陷)。到了 TP6,迁移能力被完全剥离,需要手动安装扩展、注册命令、初始化元数据表,三步缺一不可。
- 首先,必须执行
composer require topthink/think-migration:^4.0(TP6.3+ 版本推荐这个版本)。 - 然后,在
config/console.php的'commands'数组中,加入thinkmigrationCommand::class,这样命令才能被系统识别。 - 最后,必须先运行
php think migrate:install创建think_migration表,否则后续的run命令会直接失败。 - 还有一点,TP5.1 的迁移文件不能直接拿来用。类继承、构造函数签名、方法参数全都不兼容,需要重新编写。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













