现有两台MYSQL数据库
一台是192.168.1.1 端口3306 上有数据库DB1 有表TABLE1
一台是192.168.1.2 端口3307 上有数据库DB2 有表TABLE2
192.168.1.1远程连接192.168.1.2数据库所使用的用户名root1 密码root1 
192.168.1.2远程连接192.168.1.1数据库所使用的用户名root2 密码root2
现在想对 TABLE1 和 TABLE2 两张表进行关联查询 请问SQL应该怎么实现

解决方案 »

  1.   

    没有办法直接进行JOIN查询。你可以在DB1中建立一个 FEDERATED 指向这个 DB2.table2 如下,然后就象在同一数据库中DB1中操作即可。
    CREATE TABLE TABLE2 (
        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='mysql://192.168.1.2:3307/DB2/TABLE2';
      

  2.   

    请问下楼上 这么做的话 当192.168.1.2上的TABLE2数据有更新的话 192.168.1.1上的TABLE2也能得到即时更新么 CONNECTION='mysql://192.168.1.2:3307/DB2/TABLE2'这段不需要连接用的用户名和密码么我尝试了一下 创建出来的TABLE2是空的 关联查询出来的结果也是空的 
      

  3.   

    还有 ENGINE=FEDERATED 这个报错 我用的是INNODB 
      

  4.   

    哦忘了加上密码了,平时ROOT的密码都一样的。
    改成如下
    CONNECTION='mysql://root2:[email protected]:3307/DB2/TABLE2';
      

  5.   

    如果你的原表是INNODB  也是被 FEDERATED 支持的
      

  6.   


    我在192.168.1.1上建立的TABLE2 无法被创建成FEDERATED 
      

  7.   

    SQL执行错误 #1289
    The 'FEDERATED' feature is disabled;
    you need MySql built with 'FEDERATED' to have it working.
     
      

  8.   


    你是怎么安装的?编译的时候是不是没有选择 FEDERATED 功能。
      

  9.   

    mysql> show engines;
    +------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine     | Support | Comment        | Transactions | XA   | Savepoints |
    +------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | FEDERATED  | NO      | Federated MySQL storage engine        | NULL         | NULL | NULL       |
    | MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance        | NO           | NO   | NO         |
    | BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | MRG_MYISAM | YES     | Collection of identical MyISAM tables        | NO           | NO   | NO         |
    | CSV        | YES     | CSV storage engine        | NO           | NO   | NO         |
    | ARCHIVE    | YES     | Archive storage engine        | NO           | NO   | NO         |
    | InnoDB     | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    +------------+---------+----------------------------------------------------------------+--------------+------+------------+
    8 rows in set (0.00 sec)mysql>
    看看有没有?
      

  10.   

    手册上的说法。you must start the MySQL server binary using the --federated option. 在你的启动命令中加上 --federated
      

  11.   

    FEDERATED 后面是 NO  貌似是不支持这种引擎我查了下 “要允许这个存储引擎,当你构建MySQL时请使用--with-federated-storage-engine来configure”。请问下这个configure是指什么 修改my.ini 还是指在WINDOWS的服务中 启动上面有个参数文本框 在里面填?
      

  12.   


    从源代码编译MYSQLD。EXE的时候。建议你先试一下 "在你的启动命令中加上 --federated"