2 回答

TA貢獻1811條經驗 獲得超4個贊
我可以為您的方案考慮四種可能的解決方法:
查詢外部表時,請使用完全限定的表名。MySQL支持
dbname.tablename
-syntax訪問當前數據庫范圍之外的表。這要求當前連接的用戶具有從另一個物理數據庫中的請求表中讀取的適當權限。如果您的外部數據庫在不同的MySQL服務器上運行(在同一臺計算機上或通過網絡連接),則可以使用復制來不斷更新遠程表的只讀副本。僅當您運行兩個單獨的MySQL實例時才可以進行復制。
使用
FEDERATED
MySQL存儲引擎將表虛擬導入到當前數據庫中。CREATE TABLE
當使用FEDERATED
存儲引擎時,使用-statement 給出憑據,從而提高了將當前用戶訪問權限授予第二個數據庫的要求。這也適用于在不同物理服務器或不同MySQL實例上運行的數據庫。我認為這將是性能最差的選項,并且確實存在一些限制 -根據您的使用場景和要求,或多或少地重要。這是方法1的擴展。您不必每次在從外部表中請求信息時都必須指定完全限定的表名,而只需在simple的基礎上創建一個視圖即可
SELECT <<columns>> FROM <<database>>.<<table>>
。這類似于FEDERATED
-method的工作方式,但僅限于同一MySQL實例上的表。
我個人認為方法(4)最有用-但其他方法也可能是變通辦法,具體取決于您的要求。

TA貢獻1848條經驗 獲得超2個贊
目前沒有MySQL等價方法,請參閱這篇文章。但是,正如發布者所建議的,如果數據庫位于同一臺計算機上,則可以通過在表名前面添加數據庫名來解決。
另請參閱本,這是6歲,但仍然沒有得到解決。它已關閉,可能不在他們的待辦事項列表中。
添加回答
舉報