Discuz!X/多数据库配置与使用方法

简介:

在Discuz!x中,是可以方便的使用多数据库的,可以单独的配置不同的数据库连接。作用估计起来有以下两个好处。

  1. 如果负载足够搞,是可以把很一些表分布在多台数据库服务器中。这样来减小负载
  2. 可以方便的使用别的数据库中的数据。
  3. 还可以把帖子分表,分到不同的数据库服务器中 将帖子拆分到其他数据库

配置方法

在/config/config_global.php 文件中增加数据表和服务器之间的映射关系,还有相应数据库服务器配置。加入以下代码

Java代码   收藏代码
  1.  //2的意思是随后配置的数据库连接参数  
  2. $_config['db']['map']=array('表名'=>'2');  
  3.   
  4. //这里面2对应映射配置  
  5. $_config['db']['2']['dbhost'] = 'localhost';  
  6. $_config['db']['2']['dbuser'] = 'root';  
  7. $_config['db']['2']['dbpw'] = '';  
  8. $_config['db']['2']['dbcharset'] = 'gbk';  
  9. $_config['db']['2']['pconnect'] = '0';  
  10. $_config['db']['2']['dbname'] = '数据库名';  
  11. //这个参数其实没有用,要照我随后的修改就可以用了  
  12. $_config['db']['2']['tablepre'] = 'cdb_';  
 

使用方法

在程序中使用就很方便了。直接使用DB静态对象

Java代码   收藏代码
  1. print_r(DB::fetch_first("SELECT * FROM ".DB::table('表名')." limit 1"));   

注意事项

  1. 一定要使用DB::table方法,因为通过这个方法来转换数据库连接。
  2. 一些联表查询不能使用
  3. 外联数据库的表前缀一定得和现在的表前缀一样。如 pre_表名

一些额外的修改

如果需要使用其它数据库的非Discuz的表,可以修改 class_core 的 table_name 函数,这样就不用限制 pre_ 表前缀了。而且配置中的数据库前缀也可以用了。

Java代码   收藏代码
  1. function table_name($tablename) {  
  2.     if(!empty($this->map) && !empty($this->map[$tablename])) {  
  3.         $id = $this->map[$tablename];  
  4.         if(!$this->link[$id]) {  
  5.             $this->connect($id);  
  6.         }  
  7.         $this->curlink = $this->link[$id];  
  8.         //增加了这一句  
  9.         return $this->config[$id]['tablepre'].$tablename;  
  10.     } else {  
  11.         $this->curlink = $this->link[1];  
  12.     }  
  13.   
  14.     return $this->tablepre.$tablename;  
  15. }  
相关文章
|
25天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——TestStu.java
hibernate正向生成数据库表以及配置——TestStu.java
16 1
|
25天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
13 1
|
25天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.java
hibernate正向生成数据库表以及配置——Teacher.java
11 0
|
25天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Student.java
hibernate正向生成数据库表以及配置——Student.java
10 0
|
2月前
|
网络协议 关系型数据库 Linux
Linux系统中如何开启和配置OpenGauss数据库的远程连接
openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性.
|
3月前
|
SQL 数据库 HIVE
记录hive数据库远程访问配置问题
记录hive数据库远程访问配置问题
114 0
|
4月前
|
数据安全/隐私保护 时序数据库
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
128 0
|
3月前
|
NoSQL 关系型数据库 MySQL
基于Python和mysql开发的智慧校园答题考试系统(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的智慧校园答题考试系统(源码+数据库+程序配置说明书+程序使用说明书)
|
3月前
|
NoSQL 关系型数据库 MySQL
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
|
2月前
|
存储 监控 安全
内网屏幕监控软件的数据存储与管理:使用SQLite数据库保存监控记录和配置信息
在当今数字化时代,安全和监控在企业和组织中变得至关重要。内网屏幕监控软件作为一种关键工具,帮助组织监视员工的活动并确保信息安全。这种软件不仅需要高效地记录和管理监控数据,还需要能够方便地进行配置和调整。本文将讨论如何使用SQLite数据库来保存监控记录和配置信息,并介绍如何通过自动化机制将监控到的数据提交到指定网站。
150 2