yaf mysql_数据库配置

这篇博客详细介绍了ThinkYaf框架下如何配置MySQL数据库,包括将配置文件拆分为独立的`db.ini`,数据库参数如类型、DSN、主机名、端口、字符集等的设置,以及数据库调试模式的开启和调试参数。还提到了数据库连接的惰性加载和不同环境(线上、开发)的配置切换,以及支持的其他数据库类型。
摘要由CSDN通过智能技术生成

在thinkyaf的集成里,将数据库的配置文件单独拆解出来了;数据库的组件,借用的是ThinkPHP5.的轮子

在应用配置目录下面的`db.ini`中(后面统称为数据库配置文件)配置下面的数据库参数:

### 配置如下:

> [common]

> ;数据库配置

> db.type = "mysql"

> db.dsn = ""

> db.hostport = "3306"

> db.charset = "utf8"

> db.prefix = "ymf_"

> db.debug = true

> ; 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)

> db.deploy = 0

> ;数据库读写是否分离 主从式有效

> db.rw_separate = false

> ;读写分离后 主服务器数量

> db.master_num = 1

> ;指定从服务器序号

> db.slave_no = ''

> ;是否严格检查字段是否存在

> db.fields_strict = true

> ;数据集返回类型

> db.resultset_type = 'array'

> ;自动写入时间戳字段

> db.auto_timestamp = false

> ;时间字段取出后的默认时间格式

> db.datetime_format = 'Y-m-d H:i:s'

> db.sql_explain = false

> ; 线上配置

> [product : common]

>

> ; 开发配置

> [develop : common]

> db.hostname = "192.168.33.101"

> db.database = "mysql"

> db.username = "root"

> db.password = "123456"

> ;是否需要进行SQL性能分析

> db.sql_explain = false

>

#### 注意在这里有

common ;

product : common ;

develop : common

common代表数据库全局共用配置;

product代表线上配置;

develop 代表开发时候的配置

这样我们就可以线上线下配置不同的数据库地址和端口,在进行部署的时候无需去改动数据库配置

只需要将 入口文件里的 APP_ENV 改成 product 即可

![](https://box.kancloud.cn/a2bbc297c5b4b199b25540c78db69eab_493x81.png)

系统默认支持的数据库`type`包括:

| type | 数据库 |

| --- | --- |

| mysql | MySQL |

| sqlite | SqLite |

| pgsql | PgSQL |

| sqlsrv | SqlServer |

`type`参数支持命名空间完整定义,不带命名空间定义的话,默认采用`\think\db\connector`作为命名空间,如果使用应用自己扩展的数据库驱动,可以配置为:

~~~

// 数据库类型

'type' => '\org\db\Mysql',

~~~

表示数据库的连接器采用 `\org\db\Mysql`类作为数据库连接驱动,而不是默认的`\think\db\connector\Mysql`。

~~~

或者使用字符串方式:

~~~

Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');

~~~

~~~

> `connect`方法必须在查询的最开始调用,否则可能会导致部分查询失效。

字符串DSN连接的定义格式为:

> #### 数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集

> 字符串方式可能无法定义某些参数,例如前缀和连接参数。

~~~

和前面一种方法配置一样,`connection`属性可以支持数组和字符串方式。

> 需要注意的是,ThinkPHP的数据库连接是惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据操作的时候才会去连接数据库。

## 数据库调试模式

无论应用是否部署模式,数据库有自己独立的调试模式开关,数据库配置参数中的`debug`参数就是数据库调试模式的开关(默认关闭)。

~~~

// 数据库调试模式

'debug' => true,

~~~

数据库调试模式开启后,可以支持下列行为:

* 记录SQL日志;

* 分析SQL性能;

* 支持SQL监听;

由于上述行为不可避免会产生额外的开销,因此对性能存在一定的影响,但并不大,因为所有的日志是最终统一一次性写入,而且可以设置为某个用户才写入日志。

> 在生产模式下面,必须关闭应用调试模式(`app_debug`),否则会暴露你的服务器敏感信息。和应用调试模式不同,开启数据库调试模式并不会对外暴露任何安全信息,因此是否开启数据库调试模式,看自己的需求。

~~~

## 配置参数参考

下面是默认支持的数据库连接信息:

| 参数名 | 描述 | 默认值 |

| --- | --- | --- |

| type | 数据库类型 | 无 |

| hostname | 数据库地址 | 127.0.0.1 |

| database | 数据库名称 | 无 |

| username | 数据库用户名 | 无 |

| password | 数据库密码 | 无 |

| hostport | 数据库端口号 | 无 |

| dsn | 数据库连接dsn信息 | 无 |

| params | 数据库连接参数 | 空 |

| charset | 数据库编码 | utf8 |

| prefix | 数据库的表前缀 | 无 |

| debug | 是否调试模式 | false |

| deploy | 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) | 0 |

| rw_separate | 数据库读写是否分离 主从式有效 | false |

| master_num | 读写分离后 主服务器数量 | 1 |

| slave_no | 指定从服务器序号 | 无 |

| fields_strict | 是否严格检查字段是否存在 | true |

| resultset_type | 数据集返回类型 | array |

| auto_timestamp | 自动写入时间戳字段 | false |

| sql_explain | 是否需要进行SQL性能分析 开启调试有效 | false |

| query | 指定查询对象 | think\db\Query |

常用数据库连接参数(`params`)可以参考[PHP在线手册](http://php.net/manual/zh/pdo.constants.php)中的以`PDO::ATTR_`开头的常量。

> #### 注意:

>

> * * *

>

> 如果是使用`pgsql`数据库驱动的话,请先导入 `thinkphp/library/think/db/connector/pgsql.sql`文件到数据库执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值