我需要在mysql中进行主从复制。
所以我正在创建这个程序来通过程序动态更改主机
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;
//
但我收到错误。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'host_ip, MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave'; s' at line 4
如果我把它留空那就很好
例如。
CHANGE MASTER TO MASTER_HOST = '', MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='slave';
我尝试了很多次,但在这个查询中我无法使用任何变量 为什么?
如果你知道请帮助我。
谢谢。
最佳答案
主机值必须用引号引起来。 我认为除非您使用准备好的语句,否则这是不可能的。
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 ;
问候! 蒂内尔倒钩
关于mysql - mysql 中的主从复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193944/