如题,用mysqldump命令,从mysql服务器上备份数据库并生成了db.sql这样一个脚本文件,脚本文件中存储过程是包含了/**/和#开头的注释信息的。指令如下:
mysqldump -u用户名 -p密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x 数据库名 > G:\db.sql
将db.sql用ftp传到linux服务器上去,然后使用如下指令还原数据库:
mysql -u用户名 -p密码 数据库名 < /usr/test/db.sql还原结束后,查看存储过程定义,发现先前写在存储过程里面的备注信息全部丢失。请问有什么办法可以解决这个问题吗?丢失了存储过程的版本和修改日志等备注信息,日后维护会很不方便。
mysqldump -u用户名 -p密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x 数据库名 > G:\db.sql
将db.sql用ftp传到linux服务器上去,然后使用如下指令还原数据库:
mysql -u用户名 -p密码 数据库名 < /usr/test/db.sql还原结束后,查看存储过程定义,发现先前写在存储过程里面的备注信息全部丢失。请问有什么办法可以解决这个问题吗?丢失了存储过程的版本和修改日志等备注信息,日后维护会很不方便。
V_iType INT
) RETURNS varchar(10) CHARSET utf8
BEGIN
/*
业务描述:根据编码类别产生编码
输入参数:
V_iType:编码类别,定义建tMaxCode的iType字段的定义
调用示例:
SELECT UF_Get_tMaxCode(1);
创建日期:
创建人:
*/
DECLARE iCode INT;
IF V_iType IN (1,3)
THEN
#非订单类
IF EXISTS (SELECT dtLast FROM tMaxCode WHERE iType=V_iType LIMIT 0,1)
THEN
SELECT IFNULL(iMax,0)+1 INTO iCode FROM tMaxCode WHERE iType=V_iType;
ELSE
SET iCode=1;
END IF;
SELECT IFNULL(iMax,0)+1 INTO iCode FROM tMaxCode WHERE iType=V_iType;
ELSE
#订单类
IF EXISTS (SELECT iMax FROM tMaxCode WHERE iType=V_iType AND DATEDIFF(dtLast,CURRENT_DATE)=0 LIMIT 0,1)
THEN
#上次生成时间是当天
SELECT IFNULL(iMax,0)+1 INTO iCode FROM tMaxCode WHERE iType=V_iType;
ELSE
SET iCode=1;
END IF;
END IF;
IF EXISTS (SELECT iMax FROM tMaxCode WHERE iType=V_iType LIMIT 0,1)
THEN
UPDATE tMaxCode
SET
iMax=iCode,
dtLast=CURRENT_DATE
WHERE
iType=V_iType;
ELSE
INSERT INTO tMaxCode (iType,iMax,dtLast)
SELECT V_iType,iCode,CURRENT_DATE;
END IF;
IF V_iType IN (1,3)
THEN
#非订单类编码
RETURN CONCAT('',iCode);
ELSE
#订单类编码
IF iCode BETWEEN 1 AND 9
THEN
RETURN CONCAT('0000',iCode);
ELSEIF iCode BETWEEN 10 AND 99
THEN
RETURN CONCAT('000',iCode);
ELSEIF iCode BETWEEN 100 AND 999
THEN
RETURN CONCAT('00',iCode);
ELSEIF iCode BETWEEN 1000 AND 9999
THEN
RETURN CONCAT('0',iCode);
ELSE
RETURN CONCAT('',iCode);
END IF;
END IF;
END
$$DELIMITER ;但是恢复之后,备注信息一样是丢失了。
在mysqldump的参数上加上-I会报错,加上-i,导出的脚本/**/和#备注的信息就直接没有了。
而mysql这个程序的-I的定义是:-I, --help Synonym for -?请问能给出一个可用的脚本指令吗?谢谢
#非订单类编码
RETURN CONCAT('',iCode);这种信息会做为备注而不被执行。
参考下面这两段,看看有帮助没:
[26 Oct 2007 15:14] Stefan Nordhausen
[31 Dec 2007 13:08] Gleb Shchepa
./mysqldump --opt -hIP -u -p-R --triggers --single-transaction --flush-logs --database |gzip> $stordir/resou$today.gz
/*!99999 非订单类编码 */;用一个很大的version,保证不会被执行,这种注释应该不会被忽略,您试一试呢!