thinkcmf8连接多个数据库
在应对不同的数据源、读写分离、水平扩展、灾难恢复和数据分片等业务的时候,需要用到对多个数据库链接。
操作方案如下:
配置方案
打开/data/conf/config.php,在connections数组下,添加新的值。
'mysql2'=>[
//数据库类型
'type'=>env('DATABASE_TYPE2','mysql'),
//服务器地址
'hostname'=>env('DATABASE_HOSTNAME2','127.0.0.1'),
//数据库名
'database'=>env('DATABASE_DATABASE2','thinkcmf'),
//用户名
'username'=>env('DATABASE_USERNAME2','root'),
//密码
'password'=>env('DATABASE_PASSWORD2','root'),
//端口
'hostport'=>env('DATABASE_HOSTPORT2','3306'),
//数据库连接参数
'params'=>[],
//数据库编码默认采用utf8
'charset'=>env('DATABASE_CHARSET2','utf8mb4'),
//数据库表前缀
'prefix'=>env('DATABASE_PREFIX2','cmf_'),
//数据库部署方式:0集中式(单一服务器),1分布式(主从服务器)
'deploy'=>0,
//数据库读写是否分离主从式有效
'rw_separate'=>false,
//读写分离后主服务器数量
'master_num'=>1,
//指定从服务器序号
'slave_no'=>'',
//是否严格检查字段是否存在
'fields_strict'=>true,
//是否需要断线重连
'break_reconnect'=>false,
//监听SQL
'trigger_sql'=>env('APP_DEBUG',false),
//开启字段缓存
'fields_cache'=>false,
//字段缓存路径
'schema_cache_path'=>app()->getRuntimePath().'schema'.DIRECTORY_SEPARATOR,
],调用方法
在需要的地方mysql2数据库里的user表
db('user','mysql2')->select();如想在model模型里使用,代码如下
classUserModelextendsModel
{
protected$name='user';
protected$connection='mysql2';
}

