问题描述
我想要一个带有FEDERATED引擎的新表,该表是从另一个现有的InnoDB表创建(克隆)的。像这样:
CREATE TABLE balance_live
AS SELECT * FROM balance
ENGINE=FEDERATED
CONNECTION='MysqL://user:pass@8.8.8.8:3306/db/balance'
但这由于某些原因不起作用。
解决方法
您需要一个明确指定的实际表定义。这不是视图,而是表格。请参见此处以获取正确的语法: https://dev.mysql.com/doc/refman/8.0/en/federated-create-connection.html
在远程主机上执行SHOW CREATE TABLE balance;
并将其用作定义,只需更改ENGINE=FEDERATED
并添加CONNECTION子句即可。
如creating federated tables上的mysql手册所述:
使用相同的表定义在本地服务器上创建表,但是添加将本地表链接到远程表的连接信息。
您不能使用as select ...
,因为在from
子句中您只能指定本地表。联合表创建了到远程表的链接。
只需从远程表复制表定义即可。