MYSQL - 如何将数据插入另一个服务器数据库表

时间:2016-09-21 10:46:55

标签: mysql database

我试图在插入第一台服务器的表后插入数据到第二台服务器的数据库表,如下面的结构,

第二台服务器:

use SecondServerDB;

CREATE TABLE user (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `age` smallint(6) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB;

在第二个服务器上创建表后,我在第一个服务器中创建了表,如下所示,

第一台服务器:

use FirstServerDB;

CREATE TABLE remote_user2 (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `age` smallint(6) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://MysqlUserName:MysqlUserPassword@SecondServer.MyDomain.com:3306/SecondServerDB/user';

在第二台服务器中创建FEDERATED表后,在同一服务器中创建触发器,如下所示

   DELIMITER $$

    CREATE TRIGGER remote_insert_Testing AFTER INSERT ON remote_user2 FOR EACH ROW
    BEGIN
      INSERT INTO user (ID,name, age) VALUES (NEW.ID,NEW.name, NEW.Age);
    END $$

DELIMITER ;

如果我运行下面的插入查询,

INSERT INTO remote_user2 (ID,name, age) VALUES (1,'Name',27);

然后显示,错误代码:1146。表'FirstServerDB.user'不存在。

我在哪里做错了?

注意:我用谷歌搜索并发现我正在尝试的是可能的。 How to create trigger to insert data to a database on another server可能的

1 个答案:

答案 0 :(得分:0)

尝试在触发器中使用完全限定的表名:

DELIMITER $$

CREATE TRIGGER remote_insert_Testing
AFTER INSERT ON FirstServerDB.remote_user2 FOR EACH ROW
BEGIN
    INSERT INTO SecondServerDB.user (ID,name, age)
    VALUES (NEW.ID, NEW.name, NEW.Age);
END $$
DELIMITER ;

如果您不介意通过普通查询移动数据,可以尝试以下操作:

INSERT INTO SecondServerDB.user (ID, name, age)
SELECT ID, name, age
FROM FirstServerDB.remote_user2