×
PhalApi 2.x 前言

PhalApi 2.x 快速开发

1.1 下载与安装1.2 运行Hello World1.3 如何请求接口服务1.4 接口响应与在线调试1.5 Api接口层1.6 Domain领域层和ADM模式1.7 Model数据层与数据库操作1.8 单元测试1.9 自动加载和PSR-41.10 接口文档

PhalApi 2.x 数据库

2.1 数据库链接2.2 数据库与NotORM2.3 数据库使用和查询2.4 数据库分库分表策略2.5 连接多个数据库2.6 打印和保存SQL语句2.7 定制你的Model基类

PhalApi 2.x 高级专题

3.1 PhalApi 2.x 接口参数3.2 PhalApi 2.x 配置3.3 PhalApi 2.x 日志3.4 PhalApi 2.x 缓存3.5 PhalApi 2.x 过滤器3.6 PhalApi 2.x COOKIE3.7 PhalApi 2.x 加密3.8 PhalApi 2.x 国际化3.9 PhalApi 2.x CURL请求3.10 PhalApi 2.x 工具和杂项3.11 PhalApi 2.x DI服务汇总

PhalApi 2.x 发现更多

4.1 PhalApi 2.x 扩展类库4.2 PhalApi 2.x SDK包的使用4.3 PhalApi 2.x 脚本命令

关于PhalApi 2.x

5.1 PhalApi 2.x 版本完美诠释5.2 PhalApi 2.x 升级指南5.3 PhalApi 2.x VS PhalApi 1.x

2.1 PhalApi 2.x 数据库链接


截至PhalApi 2.6.0 版本,内置支持的数据库连接有:

  • MySQL (PDO)
  • MS SQL Server (PDO)
  • PostgreSQL (PDO)

数据库基本配置

数据库的配置文件为./config/dbs.php,默认使用的是MySQL数据库。主要有两部分配置:servers和tables。分别是:

  • servers,针对数据库的配置,可以配置多个数据库
  • tables,针对表的配置,支持配置分表(不需要分表可不配置分表)

servers数据库配置

servers选项用于配置数据库服务器相关信息,可以配置多组数据库实例,每组包括数据库的账号、密码、数据库名字等信息。不同的数据库实例,使用不同标识作为下标。格式如下:  

servers数据库配置项 配置说明 是否必须 默认值 示例
type 数据库类型 mysql 可以是mysql,sqlsrv或pgsql
host 数据库域名 localhost 127.0.0.1、或数据库域名
name 数据库名字 test
user 数据库用户名 root
password 数据库密码 123456
port 数据库端口 3306或1433 3306
charset 数据库字符集 UTF8 UTF8、utf8mb4

例如下面这份默认配置。

return array(
    /**
     * DB数据库服务器集群
     */
    'servers' => array(
        'db_master' => array(                         //服务器标记
            'host'      => '127.0.0.1',             //数据库域名
            'name'      => 'phalapi',               //数据库名字
            'user'      => 'root',                  //数据库用户名
            'password'  => '',                      //数据库密码
            'port'      => 3306,                  //数据库端口
            'charset'   => 'UTF8',                  //数据库字符集
        ),
    ),
);

默认的数据库标记是db_master,也就是servers的下标,注意db_master不是数据库名称,也是一个称号,通常是指主数据库,一般不需要修改。

tables表配置

tables选项用于配置数据库表的表前缀、主键字段和路由映射关系,可以配置多个表,下标为不带表前缀的表名,其中__default__下标选项为缺省的数据库路由,即未配置的数据库表将使用这一份默认配置。

简单来说,如果是简单的数据库使用,不需要分表,简单这样配置即可:

    /**
     * 自定义路由表
     */
    'tables' => array(
        //通用路由
        '__default__' => array(
            'prefix' => 'tbl_',
            'key' => 'id',
            'map' => array(
                array('db' => 'db_master'),
            ),
        ),
    ),

其中, tables.__default__是通配表,此下标不能更改或删除。每一组表的配置格式如下:

tables表配置项 配置说明 示例
prefix 表前缀 tbl_,如果没有统一表前缀可以为空
key 表主键 id
map 数据库实例映射关系,可配置多组。 array(array('db' => 'db_master'))

其中,map的每组格式为:array('db' => 服务器标识, 'start' => 开始分表标识, 'end' => 结束分表标识),start和end要么都不提供,要么都提供。 此外,db_master不能更改或者需要在前面的servers已经配置。后面会在分表再详细解释,暂时不用理会。

将servers配置和tables的配置,放在一起就是:

return array(
    /**
     * DB数据库服务器集群
     */
    'servers' => array(
        'db_master' => array(                         //服务器标记
            'host'      => '127.0.0.1',             //数据库域名
            'name'      => 'phalapi',               //数据库名字
            'user'      => 'root',                  //数据库用户名
            'password'  => '',                      //数据库密码
            'port'      => 3306,                  //数据库端口
            'charset'   => 'UTF8',                  //数据库字符集
        ),
    ),

    /**
     * 自定义路由表
     */
    'tables' => array(
        //通用路由
        '__default__' => array(
            'prefix' => 'tbl_',
            'key' => 'id',
            'map' => array(
                array('db' => 'db_master'),
            ),
        ),
    ),
);

其中,在servers中配置了名称为dbmaster数据库实例,意为数据库主库,其host为localhost,名称为phalapi,用户名为root等。在tables中,只配置了通用路由,并且表前缀为tbl,主键均为id,并且全部使用db_master数据库实例。

温馨提示:当tables中配置的db数据库实例不存在servers中时,将会提示数据库配置错误。

如何排查数据库连接错误?

普通情况下,数据库连接失败时会这样提示:

{
    "ret": 500,
    "data": [],
    "msg": "服务器运行错误: 数据库db_demo连接失败"
}

考虑到生产环境不方便爆露服务器的相关信息,故这样简化提示。当在开发过程中,需要定位数据库连接失败的原因时,可使用debug调试模式。开启调试后,当再次失败时,会看到类似这样的提示:

{
    "ret": 500,
    "data": [],
    "msg": "服务器运行错误: 数据库db_demo连接失败,异常码:1045,错误原因:SQLSTATE[28000] [1045] ... ..."
}

然后,便可根据具体的错误提示进行排查解决。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)