6

我在将来自远程服务器的数据联合到我的本地计算机时遇到问题。当我尝试执行时,我的远程表是 MyISAM

CREATE TABLE `wtc_test (
    `wtc_companyworkday_id` bigint(20) DEFAULT NULL,
) ENGINE=FEDERATED  DEFAULT CHARSET=latin1
CONNECTION='mysql://pentah:0p@l@192.1**.*.*:3306/replica/wtc_test';

我收到以下错误:-

[Err] 1432 - Can't create federated table. The data source connection string 'mysql://pentah:0p@l@192.1*.*:3306/replica/wtc_test' is not in the correct format

我看到的原因是,我的密码包含“@”字符,有人可以帮助我吗?

4

2 回答 2

5

根据 MySQL 文档,使用 CONNECTION 字符串时,不能在密码中使用“@”字符。您可以使用“create server”语句绕过此限制。

例如:

CREATE SERVER fedlink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'USERNAME', HOST 'Host_IP', DATABASE 'DB_NAME', 
PORT '3306',Password 'PASSWORD');

创建服务器链接后,要创建使用此连接的表:

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';

请点击以下链接了解更多信息: https ://dev.mysql.com/doc/refman/5.6/en/federated-usagenotes.html https://dev.mysql.com/doc/refman/5.1/en /federated-create.html

于 2015-06-22T16:55:23.130 回答
2

MySQL 用户名/主机中的通配符是%,而不是*。除此之外,您在此处指定的是目标,而不是创建用户或授予权限时的源。因此,您最好指定 MySQL 数据库服务器的主机名或静态 IP。

并尝试使用"您的密码,因为单引号会终止连接字符串。

CONNECTION='mysql://pentah:"0p@l"@yourHost:3306/replica/wtc_test';

但如果我是你,我只会更改密码。密码使用最奇特的符号并不安全,重要的是长度。看看这个

于 2013-06-25T13:41:58.220 回答