mysql之跨庫關(guān)聯(lián)查詢(dblink)問題
1、解決方案
mysql是不支持跨庫連接的,如果我們實(shí)在要連接的話可以用dblink方式。
解釋:
dblink就是我們在創(chuàng)建表的時(shí)候連接到我們的遠(yuǎn)程庫,然后我們本地新建的表數(shù)據(jù)就是映射遠(yuǎn)程的表的數(shù)據(jù)。
當(dāng)我們創(chuàng)建一個(gè)以FEDERATED為存儲引擎的表時(shí),服務(wù)器在數(shù)據(jù)庫目錄只創(chuàng)建一個(gè)表定義文件。
文件由表的名字開始,并有一個(gè)frm擴(kuò)展名。
無其它文件被創(chuàng)建,因?yàn)閷?shí)際的數(shù)據(jù)在一個(gè)遠(yuǎn)程數(shù)據(jù)庫上。這不同于為本地表工作的存儲引擎的方式。
如我現(xiàn)在本地要連接我的阿里云的sys_user表
所以我需要在本地建一個(gè)相同字段的表,我取名叫sys_user_copy,并連接到遠(yuǎn)程庫
建好后,我本地sys_user_copy的表里面的數(shù)據(jù)是映射遠(yuǎn)程的表的數(shù)據(jù)
所以我關(guān)聯(lián)查詢,可以直接關(guān)聯(lián)我本地sys_user_copy表從而查出來。
改了本地的數(shù)據(jù),遠(yuǎn)程的表數(shù)據(jù)也會跟著變
2、操作
1、開啟FEDERATED引擎
show engines
如果這里是NO,需要在配置文件[mysqld]中加入一行:federated
改完重啟服務(wù),就變成yes了。
2、建表時(shí)加上連接
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://username:password@hostname:port/database/tablename'
這樣即可。
3、缺點(diǎn)
1、本地表結(jié)構(gòu)必須與遠(yuǎn)程表完全一樣
2、不支持事務(wù)
3、不支持表結(jié)構(gòu)修改
4、刪除本地表,遠(yuǎn)程表不會刪除5、遠(yuǎn)程服務(wù)器必須是一個(gè)MySQL服務(wù)器
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解MySQL事務(wù)的ACID如何實(shí)現(xiàn)
事務(wù)(Transaction)是并發(fā)控制的基本單位,所謂的事務(wù)呢,它是一個(gè)操作序列,這些操作要么都執(zhí)行,要么都不執(zhí)行,它是一個(gè)不可分割的工作單位,本文給大家詳細(xì)介紹了MySQL事務(wù)的ACID如何實(shí)現(xiàn),需要的朋友可以參考下2023-10-10mysql最大連接數(shù)設(shè)置技巧總結(jié)
在本篇文章里小編給大家分享了關(guān)于mysql最大連接數(shù)設(shè)置的相關(guān)知識點(diǎn)和技巧,需要的朋友們學(xué)習(xí)下。2019-03-03