新的逻辑引入了新的bug,会导致在跨多库连接时,产生表名前缀映射混乱,需要再做逻辑上的修复。

  1. function table_name($tablename) {
  2. if(!empty($this->map) && !empty($this->map[$tablename])) {
  3. $id = $this->map[$tablename];
  4. if(!empty($this->config[$id]['tablepre'])){
  5. $this->tablepre = $this->config[$id]['tablepre'];
  6. }
  7. if(!$this->link[$id]) {
  8. $this->connect($id);
  9. }
  10. $this->curlink = $this->link[$id];
  11. } else {
  12. $this->tablepre = $this->config['1']['tablepre'];
  13. $this->curlink = $this->link[1];
  14. }
  15. return $this->tablepre.$tablename;
  16. }

附db Map 写法:

  1. $_config['db']['1']['dbhost'] = 'localhost'; // 服务器地址
  2. $_config['db']['1']['dbuser'] = 'root'; // 用户
  3. $_config['db']['1']['dbpw'] = 'root';// 密码
  4. $_config['db']['1']['dbcharset'] = 'gbk';// 字符集
  5. $_config['db']['1']['pconnect'] = '0';// 是否持续连接
  6. $_config['db']['1']['dbname'] = 'x1';// 数据库
  7. $_config['db']['1']['tablepre'] = 'pre_';// 表名前缀
  8.  
  9. $_config['db']['2']['dbhost'] = 'localhost';
  10. .....
  11.  
  12. //再配置一些数据源
  13. $_config['db']['xxx_sys']['dbhost'] = 'localhost';
  14.  
  15. //映射
  16. $_config['db']['map']['yyy_table'] = 'xxx_sys';

上一篇文章:http://www.cnblogs.com/x3d/p/3913690.html

Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug的更多相关文章

  1. 重大发现Discuz DB层跨库映射关系表名前缀BUG

    本文更新:http://www.cnblogs.com/x3d/p/3916198.html 场景: 在Discuz中创建Table模型,但该Table所在库与Discuz不在同一个库. Discuz ...

  2. Oracle 跨库 查询 复制表数据 分布式查询

    方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问 ...

  3. DB分布式 跨库分页

    DB分布式-两种方式 1. JDBC扩展     sharding-jdbc: 直接封装JDBC,代码迁移成本低,适用于任何连接池及ORM框架,JAR包提供服务,未使用中间层,不用额外部署,DBA无需 ...

  4. Oracle 跨库 查询 复制表数据

    在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库 ...

  5. Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、

    查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...

  6. 【转】Oracle 查询库中所有表名、字段名、表名说明、字段名说明

    转自 :http://gis-conquer.blog.sohu.com/170243422.html 查询所有表名:select t.table_name from user_tables t; 查 ...

  7. Oracle 查询库中所有表名、字段名、表名说明、字段名说明(原创)

    查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...

  8. MyBatis逆向工程去除表名前缀

    https://www.jianshu.com/p/e09d2370b796 https://blog.csdn.net/baidu_16757561/article/details/75071476 ...

  9. Oracle跨库访问数据表-DBLINK

    1:创建DBLINK(USING后面的连接字符串就是要访问的那个数据库的连接字符串) CREATE DATABASE LINK linkName CONNECT TO userName IDENTIF ...

随机推荐

  1. POJ-1475-Pushing Boxes(BFS)

    Description Imagine you are standing inside a two-dimensional maze composed of square cells which ma ...

  2. TypeError: Cannot read property 'root' of null

    解决办法: brew upgrade watchman

  3. 使用SQL Server 2014 In-Memory 内存数据库时需要注意的地方

    转载: http://www.infoq.com/cn/articles/sql-server-2014-memory-database http://www.cnblogs.com/Amaranth ...

  4. 初识WEB:输入URL之后的故事【转】

    转载一篇文章,分析的是浏览器输入url后所执行的一系列操作!写得非常清晰易懂,分享给大家! 作者:Jesse 出处:http://jesse2013.cnblogs.com/ 本文版权归作者和博客园共 ...

  5. ios 实现推送消息

      iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的 ...

  6. C++ CompletionPort(完成端口)示例

    ECHO客户端 #include <WINSOCK2.H> #include <stdio.h> #define SERVER_ADDRESS "127.0.0.1& ...

  7. CentOS 7 上编译安装MySQL 5.6.23

    1.下载源码 wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.23.tar.gz 2.解压 tar zxvf mysql-5.6 ...

  8. Careercup 论坛上较有意思的题目整理

    # 数据结构类 ### 线段树 segment tree http://www.careercup.com/question?id=5165570324430848 找区间内的value的个数 二维线 ...

  9. HIVE: SerDe应用实例

    数据文件内容 id=123,name=steven id=55,name=ray 期望输出格式 123 steven 55 ray 1. 创建表, 用正则表达式的形式指定格式 create table ...

  10. 详解SPI中的极性CPOL和相位CPHA

    SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间.即一个SPI的Master通过SPI与一个 ...