在 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中文网其他相关文章!