数据库配置
最后更新于:2022-04-02 07:29:02
## 数据库配置
如果你是独立使用,首先需要配置数据库的连接参数,使用如下方式:
~~~
use think\facade\Db;
// 数据库配置信息设置(全局有效)
Db::setConfig([
// 默认数据连接标识
'default' => 'mysql',
// 数据库连接信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 主机地址
'hostname' => '127.0.0.1',
// 用户名
'username' => 'root',
// 数据库名
'database' => 'demo',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
// 数据库调试模式
'debug' => true,
],
],
]);
~~~
如果你在ThinkPHP`6.0+`使用的话,无需动态设置,直接在`database.php`数据库配置文件中按如下方式定义即可。
~~~
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
],
],
];
~~~
> 当然在ThinkPHP里面可以使用环境变量来定义数据库连接配置信息
## 配置参数
数据库配置支持多个数据库连接,而`default`配置用于设置默认使用的数据库连接配置。`connections`则配置具体的数据库连接信息,`default`配置参数定义的连接配置必须要存在。
下面是默认支持的数据库连接参数:
| 参数名 | 描述 | 默认值 |
| --- | --- | --- |
| type | 数据库类型 | 无 |
| hostname | 数据库地址 | 127.0.0.1 |
| database | 数据库名称 | 无 |
| username | 数据库用户名 | 无 |
| password | 数据库密码 | 无 |
| hostport | 数据库端口号 | 无 |
| dsn | 数据库连接dsn信息 | 无 |
| params | 数据库连接参数 | 空 |
| charset | 数据库编码 | utf8 |
| prefix | 数据库的表前缀 | 无 |
| deploy | 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) | 0 |
| rw\_separate | 数据库读写是否分离 主从式有效 | false |
| master\_num | 读写分离后 主服务器数量 | 1 |
| slave\_no | 指定从服务器序号 | 无 |
| fields\_strict | 是否严格检查字段是否存在 | true |
| auto\_timestamp | 自动写入时间戳字段 | false |
|break_reconnect|是否开启断线重连|false|
| fields_cache | 是否开启字段缓存 | false|
|schema_cache_path|字段缓存目录|无|
|trigger_sql|是否开启SQL监听(日志)|true|
| query | 指定查询对象 | think\\db\\Query |
`type`参数用于指定数据库类型,内置支持的类型包括:
| type | 数据库 |
| --- | --- |
| mysql | MySQL |
| sqlite | SqLite |
| pgsql | PostgreSQL|
| sqlsrv | SqlServer |
|mongo|MongoDb|
|oracle|Oracle|
> 除了以上内置的数据库类型之外,你可以自己扩展数据库连接类型,通常情况下,`type`配置就是你的数据库连接对象类名。
常用数据库连接参数(`params`)可以参考[PHP在线手册](http://php.net/manual/zh/pdo.constants.php)中的以`PDO::ATTR_`开头的常量。
`dsn`配置可用于一些自定义的高级连接参数,例如:
```
'dsn' => 'mysql:dbname=testdb;host=127.0.0.1'
```
如果同时定义了参数化数据库连接信息和`dsn`配置,则会优先使用`dsn`配置参数定义的数据库连接信息。
>[danger] 如果是使用`pgsql`数据库驱动的话,请先导入 `db/connector/pgsql.sql`文件到数据库执行。
';