您的当前位置:首页>全部文章>文章详情

【Webman+MySQL教程三】连接 MySQL:webman/database 安装与配置

果子发表于:2026-10-04 14:10:36浏览:1次TAG: #webman #PHP #MySql #教程

本篇目标

给 Webman 项目接上 MySQL:安装组件、设计测试表、写好配置、验证连接,并处理常驻内存模式下常见的连接断开问题。

一、安装组件

Webman 官方推荐通过 webman/database 集成 Illuminate Database(即 Laravel 的 ORM/查询构建器):

composer require webman/database

安装后会自动生成 config/database.php(若无则手动创建,见下)。

二、准备数据库

用 MySQL 客户端或 Navicat 建库建表(剩下两篇都用这张表):

CREATE DATABASE webman_demo DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

USE webman_demo;

CREATE TABLE `student` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL COMMENT '姓名',
  `class_name` varchar(50) NOT NULL COMMENT '班级',
  `score` decimal(5,1) NOT NULL DEFAULT '0.0' COMMENT '成绩',
  `created_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';

INSERT INTO student(name, class_name, score) VALUES
('张三','党校1班',88.5),
('李四','党校1班',92.0),
('王五','党校1班',76.0);

三、配置 database.php

关键点:Webman 是长驻进程,连接配置从环境变量或写死均可。示例:

<?php
return [
    'default' => 'mysql',
    'connections' => [
        'mysql' => [
            'driver'      => 'mysql',
            'host'        => '127.0.0.1',
            'port'        => '3306',
            'database'    => 'webman_demo',
            'username'    => 'root',
            'password'    => env('DB_PASSWORD', ''),
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_general_ci',
            'prefix'      => '',
            'timezone'    => '+08:00',
        ],
    ],
];

env() 读取的是项目根目录 .env 文件,生产环境建议密码放 .env,不要写进代码库。

四、验证连接

在某个控制器里写一段临时测试代码:

use support\\Db;

public function testDb(Request $request)
{
    $rows = Db::select('SELECT * FROM student');
    return json(['count' => count($rows), 'rows' => $rows]);
}

访问后若返回 3 条数据,说明 MySQL 已经接好。support\Db 是 facade,等价于 Webman\\Database\\Db。

五、常驻内存下的连接问题

MySQL 默认 wait_timeout 为 8 小时,空闲后连接会被服务端掐断。Webman 进程不退出,复用的连接可能失效。表现是偶发 MySQL server has gone away。解决办法:

  • 升级 webman/database 到较新版本,内部已处理重连;
  • 或在 config/database.php 中调小连接复用时间、启用 options 中的 PDO::ATTR_PERSISTENT 时格外谨慎;
  • 生产环境建议用 webman/db(连接池)方案替代直接 PDO。

小结

本篇完成了组件安装、建库建表、连接配置与验证。下一篇引入 Model 模型类,用 ORM 方式做学生表的增删改查。