在MySQL 中連接來自不同伺服器的表
嘗試連接來自兩個不同伺服器(server1 和server2)的表可能會遇到錯誤。以下是使用MySQL 的FEDERATED ENGINE 克服這項挑戰的方法:
使用聯合表
要彌合伺服器之間的差距,請基於遠端表建立一個聯合表。兩個表的結構必須保持相同。
範例程式碼:
以名為 test_table 為基礎的遠端表建立名為 federated_table 的聯合表:
CREATE TABLE federated_table ( id INT(20) NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', other INT(20) NOT NULL DEFAULT '0', PRIMARY KEY (id), INDEX name (name), INDEX other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';
透過建立聯合連接,您可以跨伺服器連接表,就像它們一樣local:
SELECT a.field1, b.field2 FROM federated_table AS a INNER JOIN [server2, 3312].[db2].table2 AS b ON a.field1 = b.field2;
注意: fed_user 帳戶必須在兩台伺服器上擁有適當的權限才能建立聯合連線。
以上是如何連接不同MySQL伺服器上的表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!