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