Mysql
MySQL:無法在 mysql 內部執行更改主機
我正在嘗試創建一個可以執行 change master to command 的儲存過程。
這是我能夠想出的。
DELIMITER // CREATE PROCEDURE changeMasterTo(IN ip char(20),IN port int,IN user char(30),IN password char(30)) LANGUAGE SQL COMMENT 'changes master to' ThisStoredProcedure:BEGIN CHANGE MASTER TO MASTER_HOST=ip, MASTER_PORT=port, MASTER_USER=user, MASTER_PASSWORD=password, MASTER_AUTO_POSITION=1, MASTER_SSL=1; END; //
但它失敗並出現以下錯誤。
ERROR 1064 (42000):您的 SQL 語法有錯誤;檢查與您的 MySQL 伺服器版本相對應的手冊,以獲取在附近使用的正確語法
'ip, MASTER_PORT=port, MASTER_USER=user, MASTER_PASSWORD=password, MASTER_AUTO_P'
在第 5 行
我不確定問題是什麼,任何幫助將不勝感激。
、
host
和值應該用單引號括起來user
。password
您最好將其作為動態 SQL 執行
DELIMITER // DROP PROCEDURE IF EXISTS changeMasterTo // CREATE PROCEDUREchangeMasterTo(IN ip char(20),IN port int,IN user char(30),IN password char(30)) LANGUAGE SQL COMMENT 'changes master to' ThisStoredProcedure:BEGIN SET @sql = 'STOP SLAVE'; PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s; SET @sql = CONCAT('CHANGE MASTER TO MASTER_HOST=',QUOTE(ip)); SET @sql = CONCAT(@sql,',MASTER_PORT=',port); SET @sql = CONCAT(@sql,',MASTER_USER=',QUOTE(user)); SET @sql = CONCAT(@sql,',MASTER_PASSWORD=',QUOTE(password)); SET @sql = CONCAT(@sql,',MASTER_AUTO_POSITION=1,MASTER_SSL=1'); PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s; END; // DELIMITER ;