mysql 重定义分隔符

  • 作者
  • KING

默认情况下,mysql的分隔符为";"

也就是遇到";"便提交当前语句.

在单个语句的情况下,完全没有问题

但是当做到一些,内含多条语句的时候,刚会遇到问题.如存储过程,计划任务等等情况.

 

遇到的问题如下:

我原来的计划任务:


drop event getRankData;
CREATE DEFINER=`root`@`%` 
EVENT `getRankData`
ON SCHEDULE EVERY 24 HOUR STARTS '2011-10-10 15:11:19'
ON COMPLETION PRESERVE
ENABLE
DO
begin
 
 insert into table......;
 
insert into table......;
 
.....
 
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 'end' at line 1

 

解决方法:

重定义分隔符,让其在遇到";"的时候,并不马上提交SQL语句.

具体SQL语句如下:

delimiter $$ ;      --->将分隔符定义为"$$",而此时的分隔符还是";"
CREATE DEFINER=`root`@`%` 
EVENT `getRankData`
ON SCHEDULE EVERY 24 HOUR STARTS '2011-10-10 15:11:19'
ON COMPLETION PRESERVE
ENABLE
DO
begin
 
     insert into table......;
 
     insert into table......;
 
      .....
 
end $$  --->表示结束
 
delimiter ;$$      --->将分隔符还原为";",不然,不符合一般操作习惯.而此时的分隔符还是"$$"

mysql 重定义分隔符

默认情况下,mysql的分隔符为";"

也就是遇到";"便提交当前语句.

在单个语句的情况下,完全没有问题

但是当做到一些,内含多条语句的时候,刚会遇到问题.如存储过程,计划任务等等情况.

 

遇到的问题如下:

我原来的计划任务:


drop event getRankData;
CREATE DEFINER=`root`@`%` 
EVENT `getRankData`
ON SCHEDULE EVERY 24 HOUR STARTS '2011-10-10 15:11:19'
ON COMPLETION PRESERVE
ENABLE
DO
begin
 
 insert into table......;
 
insert into table......;
 
.....
 
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 'end' at line 1

 

解决方法:

重定义分隔符,让其在遇到";"的时候,并不马上提交SQL语句.

具体SQL语句如下:

delimiter $$ ;      --->将分隔符定义为"$$",而此时的分隔符还是";"
CREATE DEFINER=`root`@`%` 
EVENT `getRankData`
ON SCHEDULE EVERY 24 HOUR STARTS '2011-10-10 15:11:19'
ON COMPLETION PRESERVE
ENABLE
DO
begin
 
     insert into table......;
 
     insert into table......;
 
      .....
 
end $$  --->表示结束
 
delimiter ;$$      --->将分隔符还原为";",不然,不符合一般操作习惯.而此时的分隔符还是"$$"