2009-06-09 220 views

回答

2

你想要的mysqldump的“--routines”选项。

从--routines标志的文档:从所述倾倒数据库

转储存储例程(过程和 函数)。 使用此选项需要mysql.proc表的SELECT 权限。 使用 - 例程生成的输出包含CREATE PROCEDURE和CREATE FUNCTION语句,以 重新创建例程。但是,这些语句不包括 等属性,例如创建例程和 修改时间戳。这意味着 ,当这些例程被重新加载时,它们将被创建,并且 时间戳等于重新加载时间。

如果您需要例程为 ,并使用它们的原始 时间戳属性重新创建,请勿使用 - 例程。相反,使用MySQL帐户直接转储并重新加载mysql.proc表 的内容,该帐户 对 mysql数据库具有适当的权限。

此选项已添加到MySQL 5.1.2中。 在此之前,存储的例程不是 转储。例程DEFINER值不是 转储到MySQL 5.1.8。这意味着 在5.1.8之前,当例程重新加载 时,它们将被创建为 定义者被设置为重新加载用户。 如果您需要使用其原始 定义器重新创建的例程为 ,请直接转储并将 的内容作为 加载到前面所述的mysql.proc表中。

2
mysqldump -u root -p --routines --databases io \ 
| sed -e "s/;;/\$\$/g" \ 
> io.sql 

请尝试转储。并输入命令:

mysql -u root -p --fource --databases io < io.sql 
相关问题