ThinkPHP 6.0 数据库配置需将连接参数置于 connections 数组内,default 仅指定别名;必填字段包括 type、hostname、database、username、password;优先级为 .env > database.php;验证用 Db::query("SELECT VERSION()")。

ThinkPHP 6.0 配置数据库连接,核心是修改 config/database.php 文件,并确保环境变量(.env)与配置逻辑一致。配置生效的关键不在“写全参数”,而在于结构正确、层级准确、开关到位。
基础连接配置必须放在 connections 里
TP6 不再支持顶层直写数据库参数。所有具体连接定义必须放在 'connections' 数组中,'default' 只是引用别名:
-
'default' => 'mysql'表示默认使用名为mysql的连接配置 -
'connections' => ['mysql' => [...]]才是真正填写主机、账号、库名等的地方 - 若想加第二个库(如报表库),可新增
'report' => [...],再用Db::connect('report')显式调用
必填字段和常用参数说明
每个连接至少需明确以下字段,其余可按需补充:
-
type:数据库类型,如
'mysql'、'pgsql'、'sqlsrv' -
hostname:IP 或域名,不建议写
localhost(可能走 socket) - database:库名,不能为空
- username 和 password:登录凭证
-
hostport:端口,默认
3306(MySQL) -
charset:推荐
'utf8mb4',兼容 emoji -
prefix:表前缀,如
'tp_',留空则无前缀
优先级:.env > database.php
框架会自动读取 .env 中的 DATABASE_* 变量,覆盖 database.php 中对应值。例如:
立即学习“PHP免费学习笔记(深入)”;
DATABASE_TYPE=mysql DATABASE_HOSTNAME=192.168.1.100 DATABASE_DATABASE=shop_db DATABASE_USERNAME=app_user DATABASE_PASSWORD=xxx
此时 database.php 中只需写:
'type' => Env::get('database.type', 'mysql')'hostname' => Env::get('database.hostname', '127.0.0.1')- 其余同理 —— 这样开发/测试/生产环境切换只需改
.env,无需动代码
验证是否连通最简单的方法
写一个测试接口,用原生查询绕过模型和缓存:
- 不要直接查模型(可能触发额外逻辑)
- 用
Db::query("SELECT VERSION() AS v")或Db::table('user')->limit(1)->select() - 若报错
PDOException,重点检查hostname、port、防火墙、用户远程权限 - 若返回空数组但无报错,说明连上了,问题在 SQL 或表名



















