我的情况是这样的:我将服务器上的mysql数据库导出到本地的sql文件,这个数据库里面有很多的存储过程,而且有几个存储过程还有注释comment,就像这样:
CREATE PROCEDURE `food_add`( p_title varchar(100), p_description varchar(100), p_price varchar(100), p_code_number varchar(100), p_type varchar(100), sess_uid varchar(100))
COMMENT 'post,true,true,id\n添加菜品'
begin
.....
end
导出到本地的sql文件后,我就进入到命令行(不是mysql的命令行,是系统的命令行解释器)想用命令还原数据库,结果报了一个错误:Cannot create stored routine `food_add`.
这个时候我再来看数据库有什么变化,发现创建这个存储过程之前的语句全部都执行成功了,但是之后的语句全都没有执行.
我仔细看了这个存储过程,发现它与其他存储过程的区别就是它有注释comment,其他的都没有.于是我把comment语句删掉,再次执行,执行成功了.
后来在网上看到有人说用source语句还原数据库可以保留注释,于是把之前删掉的comment重新加了上去,再用source还原数据库.
结果是:数据库还原成功,中间没有报错,成功之后我想看一下food_add这个存储过程有没有加上去,于是我执行了语句:show create procedure food_add;
mysql提示找不到这个存储过程,而其他所有没有加comment存储过程全都执行成功了.