ThinkPHP 读写分离数据库配置文件写法【进阶】
PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。
ThinkPHP6读写分离配置要求:deploy设为1启用读写分离机制,rw_separate设为true;write必须配置为一维数组表示主库连接,read必须配置为二维数组表示从库连接;主从库的charset字符集和database数据库名必须完全一致。若配置有误,查询会静默回退到主库且不产生任何报错信息。
先说个很多开发者踩过的坑吧:ThinkPHP 6 的读写分离,真不是配个 read 就自动走从库了。关键在于,必须在 config/database.php 里严格按层级、键名、数组结构写对,缺一不可,否则所有查询会被静默回退到主库,而且不报错——这其实是最棘手的地方。

default 和 connections 必须分工明确
框架只认 default 指向的那个连接名,比如 'mysql',而该连接的所有实际配置,必须完整写在 connections['mysql'] 里。不能把数据库参数直接塞在 default 下,也不能用临时数组调用 Db::connect([]) 绕过。
default只能是字符串,比如'mysql'或'main_db'。connections下的每个键名必须是合法的 PHP 变量名:小写字母开头,只能包含字母、数字、下划线,绝对不能出现.、-或大写字母。- 每个连接配置里,
type、hostname、database、username、password、charset这六项一个都不能少。漏掉type会导致驱动误判,这个坑尤其隐蔽。
启用分离的四个硬性条件
只有同时满足以下四个条件,Db::name('user')->select() 才可能真正走从库:
'deploy' => 1:这是总开关,没有它整个机制不会初始化。'rw_separate' => true:注意,这个配置仅在deploy === 1时才会生效。'write'必须是一维关联数组,里面完整包含主库的所有参数。例如:['hostname' => '192.168.1.5', 'username' => 'rw_user', 'database' => 'app_db']。'read'必须是二维数组,哪怕只有一个从库,也要在外面套一层大括号。例如:[ ['hostname' => '192.168.1.10', 'username' => 'ro_user', 'database' => 'app_db'] ]。
字符集与 database 名必须完全一致
主库和所有从库的 charset(比如 'utf8mb4')和 database 名必须完全一致,不能有半点差异。如果从库用的是 utf8,主库却是 utf8mb4,那 emoji 字段要么乱码,要么写入直接失败。而 database 名不同的话,跨库 JOIN 或事务操作就会出问题。
- 建议显式声明
'charset' => 'utf8mb4',不要依赖默认值,主动写清楚更稳妥。 - 所有节点使用同一库名,避免因命名差异导致路由异常,这个细节很容易被忽略。
手动指定读连接的两种可靠方式
当需要绕过自动路由,比如报表查专用从库,或者调试时想确认某条 SQL 是否真的走了从库,有两种方法比较可靠:
- 在
connections中单独定义一个只读连接,比如'report_sla ve',这个连接里不需要写deploy或rw_separate,它完全独立,不参与读写分离逻辑。 - 代码中用
Db::connect('report_sla ve')->table('log')->select()直接调用,这个连接与读写分离机制无关,定位问题特别方便。 - 对普通构造器链式调用
->useReadConnection(),例如:Db::table('user')->useReadConnection()->where('id', 1)->find(),这种方式更灵活,适合临时指定。
WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许
Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator
Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。













