我们设置数据库密码时会使用一些特殊符号,如@ 等
如果使用了 @ 符号,那么如下的方式创建链接时会报错。
CREATE TABLE `AA_LINK` (
`ID_` varchar(64) NOT NULL COMMENT 'ID',
`NAME` varchar(64) DEFAULT NULL COMMENT 'NAME'
) ENGINE=federated CONNECTION='mysql://fed_user:aa@bb@remote_host:9306/federated/test_table';
报错信息,[Err] 1432 - Can't create federated table. The data source connection string
查看mysql参考文档,中声明,使用connection时不能解析密码中的 @ 符号
When using a CONNECTION string, you cannot use an '@' character in the password
出现这种问题,又不能修改数据库密码,我们可以使用另一个办法
使用CREATE SERVER创建FEDERATED表
CREATE SERVER fedlink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'fed_user', PASSWORD 'aa@bb',HOST 'remote_host', PORT 9306, DATABASE 'federated');
CREATE TABLE `AA_LINK` (
`ID_` varchar(64) NOT NULL COMMENT 'ID',
`NAME` varchar(64) DEFAULT NULL COMMENT 'NAME'
)
ENGINE=FEDERATED
CONNECTION='fedlink/test_table';
通过以上的办法处理,终于解决了密码@符号的跨服务链接问题。