ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 4487|回复: 8

[笔记] MySQL实现ORACLE那样的dblink方法

[复制链接]
认证徽章
论坛徽章:
25
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44紫蛋头
日期:2011-09-03 20:30:47ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
发表于 2017-4-3 17:45 | 显示全部楼层 |阅读模式
本帖最后由 qingyun 于 2017-4-14 09:11 编辑


项目做接口的时候,如果采用中间表方式,能够访问其他服务器上的mysql数据库,
最好的方法,就是使用dblink,参考网上的文章,实践之后,简单整理一下:



1. 执行 SHOW  ENGINES

显示很多记录,最后一条记录
Engine Support Comment Transactions XA Savepoints

FEDERATED YES Federated MySQL storage engine NO NO NO



如果 support 为No;

就要重启mysql;

有两种方法:
a..绿色启动;
bin命令下,执行dos命令: Mysqld -nt --federated

b.注册服务;
mysqld --install mysql --federated
(移出服务: mysqld --remove mysql )







2. 建立一个和被访问表的虚拟表;

比如:
被访问服务器的表结构是:
CREATE TABLE pcl(
  PCL_NO VARCHAR(50) NOT NULL,
  PCL_NAME VARCHAR(50) DEFAULT NULL,
  PRIMARY KEY (PCL_NO)
)

那么为了能够访问它,本机上建立:

CREATE TABLE pcl(
  PCL_NO VARCHAR(50) NOT NULL,
  PCL_NAME VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (PCL_NO)
)
ENGINE=FEDERATED CONNECTION='mysql://root:密码@ip:3306/数据库/pcl'
DEFAULT CHARSET=utf8

注意:一定要用DEFAULT CHARSET=utf8,否者中文会显示乱码;

认证徽章
论坛徽章:
25
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44紫蛋头
日期:2011-09-03 20:30:47ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
发表于 2017-4-3 23:58 | 显示全部楼层
要想中文问题彻底解决:
在根目录的my.ini 增加下面的参数:
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
#skip-name-resolve
skip-grant-tables



而且到了 my5.7版本以后,有两个改变:

1. 默认的data目录没了;
要用下面指令初始化:
比如: D:\mysql\5.7.12\bin>mysqld --initialize-insecure --user=mysql


2.修改密码的方法也变了:

UPDATE user SET Password = PASSWORD('abcd') WHERE user = 'root';
--5.7以后的版本需要这样;
ALTER USER 'root'@'localhost'IDENTIFIED BY 'abcd';


使用道具 举报

回复
认证徽章
论坛徽章:
25
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44紫蛋头
日期:2011-09-03 20:30:47ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
发表于 2017-4-4 14:48 | 显示全部楼层

mysql 实现循环里的exit 或continue

本帖最后由 qingyun 于 2017-4-4 14:50 编辑

DROP PROCEDURE  MY_TEST ;

CREATE   PROCEDURE  MY_TEST()
BEGIN


  set @X1=10;

L1:  
  WHILE @X1>0
DO
  SET @X1=@X1-1;
   SELECT @X1;
    LEAVE L1;   -- 相当于oracle里的 exit;
    ITERATE L1; -- 相当于 oracle里的continue ;
SET @X1=@X1-2;
END WHILE ;



SET @X1=@X1-100;
SELECT @X1;
END;


使用道具 举报

回复
论坛徽章:
9
ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:142013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02itpub13周年纪念徽章
日期:2014-10-08 15:15:25itpub13周年纪念徽章
日期:2014-10-08 15:15:25沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:58:18秀才
日期:2016-04-21 14:08:53
发表于 2017-4-6 15:14 | 显示全部楼层
ENGINE=FEDERATED
这种引擎很少公司用的喽,而且好像这种链路建起来后,性能很差的。
如果INNODB引擎可以建dblink就好了

使用道具 举报

回复
认证徽章
论坛徽章:
3
慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:31秀才
日期:2017-08-18 11:02:47
发表于 2017-4-11 17:21 | 显示全部楼层
受教了

使用道具 举报

回复
论坛徽章:
2
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
发表于 2017-4-12 17:59 | 显示全部楼层
我觉得这种小众的东西就不要碰了,免得踩坑

使用道具 举报

回复
认证徽章
论坛徽章:
25
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44紫蛋头
日期:2011-09-03 20:30:47ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
发表于 2017-4-13 16:42 | 显示全部楼层
zhanhorse 发表于 2017-4-6 15:14
ENGINE=FEDERATED
这种引擎很少公司用的喽,而且好像这种链路建起来后,性能很差的。
如果INNODB引擎可以 ...

就是innodb引擎,我也希望用dblink, 但是网上没找到建立dblink的方法;

被迫使用federated这种怪怪的方法;需要本地建立一个远程的虚拟表;
确实感觉怪怪的,而且万一远程表有点小调整,本地这个虚拟表就会失效;

使用道具 举报

回复
认证徽章
论坛徽章:
14
itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-10-08 15:19:03授权会员
日期:2006-03-10 17:20:13itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-09-26 11:35:50优秀写手
日期:2014-09-04 06:00:03马上有车
日期:2014-02-18 16:41:11
发表于 2017-4-14 17:44 | 显示全部楼层
目前MySQL的dblink功能好像只能用这种方式实现吧。

使用道具 举报

回复
论坛徽章:
9
ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:142013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02itpub13周年纪念徽章
日期:2014-10-08 15:15:25itpub13周年纪念徽章
日期:2014-10-08 15:15:25沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:58:18秀才
日期:2016-04-21 14:08:53
发表于 2017-4-26 14:35 | 显示全部楼层
qingyun 发表于 2017-4-13 16:42
就是innodb引擎,我也希望用dblink, 但是网上没找到建立dblink的方法;

被迫使用federated这种怪怪的 ...

MYSQL只能用ENGINE=FEDERATED引擎,才能建立起这种链路,INNODB引擎不能建dblink

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票7.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月30日前

活动链接>>
TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表