我需要mysql中的master to slave复制。
所以我创建此过程以通过过程
动态更改主数据delimiter //
CREATE PROCEDURE change_master( in host_ip varchar(50))
begin
stop slave;
CHANGE MASTER TO MASTER_HOST = host_ip, MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave';
start slave;
end;
//
但是我收到了错误。
错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 要在'host_ip,MASTER_PORT = 3306附近使用的语法, MASTER_USER ='复制',MASTER_PASSWORD ='奴隶'; s'在第4行
如果我把它留空,那么很好
例如
CHANGE MASTER TO MASTER_HOST = '', MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave';
我尝试了很多次但是在这个查询中我无法使用任何变量 为什么呢?
如果你知道帮助我。
谢谢。
答案 0 :(得分:2)
主机值必须用引号括起来。 我认为除非你使用准备好的声明,否则这是不可能的。
delimiter //
CREATE PROCEDURE change_master( in host_ip varchar(50))
begin
set @ssql:=concat("CHANGE MASTER TO MASTER_HOST = '",host_ip,"', MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave'");
stop slave;
prepare sql_stm from @ssql;
execute sql_stm;
deallocate prepare sql_stm;
start slave;
end//
delimiter ;
问候! Tinel Barb