2016-09-21 49 views
2

我试图将数据插入到第二个服务器的数据库表后插入到第一个服务器的类似下面的结构表,MYSQL - 如何将数据插入到另一台服务器数据库表

二服务器:

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:[email protected]:3306/SecondServerDB/user'; 

在第二个服务器创建联合表格后,在像下同服务器创建的触发器,

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'不存在。

我在哪里犯错?

注:我GOOGLE了一下,发现我正在尝试是可能的。 How to create trigger to insert data to a database on another server可能的

回答

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 
+0

我仍然看到SecondServerDB.user不存在。 – MMMMS

相关问题