1.先查看federated存储引擎存储引擎是否启用
show engines;
support有以下几种状态:
yes : 支持并开启
default:支持并开启,并且是默认的存储引擎
no:不支持
disable:支持但没有开启
注意:federated 默认是no状态的,此处我已经设置好了,在my.ini配置文件(win系统下)中mysqld下追加一行:deferated
然后保存,重启mysql服务就可以了。
现在我要说的是重点:
我的版本是免安装版本,所以my.ini文件是不存在的,所以我就创建了my.ini文件,但是创建了之后,总是会出现无法启动,错误内容是:无法启动MYSQL服务”1067 进程意外终止”,调查了很久,后来发现原来是my.ini文件中basedir=E:\\Program Files\\mysql-5.0.27的目录必须是\\,我用了\,
2.创建远程连接表
CREATE TABLE FEDERATED_actor (
`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`actor_id`),
KEY `idx_actor_last_name` (`last_name`)
) ENGINE =FEDERATED CONNECTION='mysql://root:123456@127.0.0.1:3306/sakila/actor';
CONNECTION选项中的连接字符串的一般形式如下:scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
还有一些连接字符串的例子:
CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'
注意:配置密码作为纯文本的话会存在安全问题,运行show create table,show table status是可以见的
以下是我的测试结果:
DROP TABLE IF EXISTS `federated_paytype`;
CREATE TABLE `federated_paytype` (
`id` varchar(32) NOT NULL COMMENT '主键',
`code` varchar(2) NOT NULL COMMENT '编码',
`cname` varchar(64) NOT NULL COMMENT '中文名称',
`ename` varchar(64) DEFAULT NULL COMMENT '英文名称',
`currcode` varchar(2) NOT NULL COMMENT '货币类型 默认“00”',
`changeflag` int(11) NOT NULL DEFAULT '0' COMMENT '是否找零 0-不找零;1-找零',
`getnumflag` int(11) NOT NULL DEFAULT '0' COMMENT '是否输入卡号 0-不用卡号;1-输入卡号',
`exchgrate` decimal(12,4) NOT NULL DEFAULT '1.0000' COMMENT '汇率',
`state` int(11) NOT NULL DEFAULT '1' COMMENT '是否启用 0-禁用;1-启用',
`referid` varchar(8) DEFAULT NULL COMMENT 'erp支付编码 erp系统对应支付方式编码',
PRIMARY KEY (`id`),
UNIQUE KEY `ix_t_s_paytype` (`code`)
) ENGINE= FEDERATED CONNECTION = 'mysql://root:root@192.168.1.231/cclcloud/t_s_paytype' CHARSET=utf8;
创建后的表中数据就是192.168.1.231中的数据,可以直接查看。无法修改该表的结构,修改数据时,这2个都会做修改。