15.8.2.2 使用 CREATE SERVER 创建 FEDERATEDtable

如果要在同一服务器上创建多个FEDERATEDtable,或者要简化创建FEDERATEDtable 的过程,则可以使用CREATE SERVER语句来定义服务器连接参数,就像使用CONNECTION字符串一样。

CREATE SERVER语句的格式为:

CREATE SERVER
server_name
FOREIGN DATA WRAPPER wrapper_name
OPTIONS (option [, option] ...)

创建新的FEDERATEDtable 时,在连接字符串中使用* server_name *。

例如,要创建与CONNECTION字符串相同的服务器连接:

CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';

您将使用以下语句:

CREATE SERVER fedlink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'fed_user', HOST 'remote_host', PORT 9306, DATABASE 'federated');

要创建使用此连接的FEDERATEDtable,您仍将使用CONNECTION关键字,但要指定在CREATE SERVER语句中使用的名称。

CREATE TABLE test_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='fedlink/test_table';

在此示例中,连接名称包含连接名称(fedlink)和要链接到的 table(test_table)的名称,并用斜杠分隔。如果仅指定连接名称而不指定 table 名称,那么将使用本地 table 的 table 名称。

有关CREATE SERVER的更多信息,请参见第 13.1.17 节“ CREATE SERVER 语句”

CREATE SERVER语句接受与CONNECTION字符串相同的参数。 CREATE SERVER语句更新mysql.serverstable 中的行。有关连接字符串中的参数,CREATE SERVER语句中的选项以及mysql.serverstable 中的列之间的对应关系的信息,请参见下 table。作为参考,CONNECTION字符串的格式如下:

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
DescriptionCONNECTION字串CREATE SERVER optionmysql.servers
Connection schemeschemewrapper_nameWrapper
Remote useruser_nameUSERUsername
Remote passwordpasswordPASSWORDPassword
Remote hosthost_nameHOSTHost
Remote portport_numPORTPort
Remote databasedb_nameDATABASEDb