我需要将MySQL数据库从Linux上的服务器复制到Windows上的服务器。我尝试过使用mysqldump但它似乎没有包含Stored Procs。我想复制所有内容,即架构,数据,存储过程,触发器等。
谢谢, 唐
答案 0 :(得分:2)
您需要--routines的“mysqldump”选项。
从--routines标志的文档:
转储存储的例程(程序和 来自转储数据库的函数)。 使用此选项需要SELECT mysql.proc表的特权。 使用生成的输出 --routines包含CREATE PROCEDURE和CREATE FUNCTION语句 重新创建例程。但是,这些 语句不包含属性 例如常规创建和 修改时间戳。这意味着 当重新加载例程时 他们将与 时间戳等于重新加载时间。
如果您需要例程 用原版重新创建 时间戳属性,不要使用 --routines。而是转储并重新加载mysql.proc表的内容 直接,使用MySQL帐户 拥有适当的特权 mysql数据库。
在MySQL 5.1.2中添加了此选项。 在此之前,存储的例程不是 倾倒。常规DEFINER值不是 倾销到MySQL 5.1.8。这意味着 在5.1.8之前,当例程是 重新加载,它们将被创建 定义器设置为重新加载用户。 如果你需要例程 用原版重新创建 定义器,转储和加载内容 mysql.proc表直接作为 如前所述。
答案 1 :(得分:2)
mysqldump -u root -p --routines --databases io \
| sed -e "s/;;/\$\$/g" \
> io.sql
请尝试转储。并导入命令:
mysql -u root -p --fource --databases io < io.sql