推荐配置 driver 为 'pdo',因 Hyperf/database 基于 PDO 抽象层,仅支持 'pdo' 等标准标识;设为 'mysqli' 会因缺少对应连接器报错;需启用 pdo 和 pdo_mysql 扩展,协程环境下可自动协程化。

Hyperf 3.2 中,config/autoload/databases.php 的 driver 配置推荐使用 pdo(即 pdo_mysql)而非 mysqli,但需注意:这里填的是 'pdo' 字符串,不是 'pdo_mysql'。
原因如下:
- Hyperf 内部数据库组件(
hyperf/database)基于 PDO 抽象层构建,其driver配置项只接受标准驱动标识:'pdo'、'mysql'、'pgsql'、'sqlite'等。 -
'pdo'表示启用 PDO 扩展,并通过 DSN 自动识别 MySQL(如mysql:host=...),此时底层实际使用的是PDO_MySQL驱动。 -
'mysqli'是一个不被 Hyperf 原生支持的 driver 值;若强行设为'mysqli',会因找不到对应连接器(Hyperf\Database\Connectors\MysqliConnector不存在)导致启动报错或降级失败。
✅ 正确写法(MySQL 场景):
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
'driver' => 'pdo',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'test',
'username' => 'root',
'password' => '',
'options' => [
PDO::ATTR_CASE => PDO::CASE_NATURAL,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
],
⚠️ 补充说明:
- 使用
pdo时,必须确保 PHP 已启用pdo和pdo_mysql扩展(非mysqli扩展); - 若你启用了 Swow 协程引擎(Hyperf 3.1+ 推荐),还需配合
Swoole\Runtime::enableCoroutine()或 Swow 的协程化机制——此时pdo可被自动协程化,无需改用mysqli; - 官方文档与源码中所有数据库配置示例均以
'pdo'为准,mysqli不在支持列表内。
所以结论很明确:填 'pdo',靠 PDO + MySQL DSN 工作,安全、标准、兼容性好。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










