2016-09-21 117 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

相關問題