我需要将 MySQL 数据库从 Linux 上的服务器复制到 Windows 上的服务器。我试过使用 mysqldump 但它似乎不包括存储过程。我想复制所有内容,即模式、数据、存储过程、触发器等。
谢谢,唐
您需要mysqldump的“ --routines ”选项。
从 --routines 标志的文档中:
从转储的数据库中转储存储的例程(过程和函数)。使用此选项需要 mysql.proc 表的 SELECT 权限。使用 --routines 生成的输出包含用于重新创建例程的 CREATE PROCEDURE 和 CREATE FUNCTION 语句。但是,这些语句不包括例程创建和修改时间戳等属性。这意味着当例程重新加载时,它们将被创建,其时间戳等于重新加载时间。
如果您需要使用其原始时间戳属性重新创建例程,请不要使用 --routines。相反,使用对 mysql 数据库具有适当权限的 MySQL 帐户直接转储和重新加载 mysql.proc 表的内容。
此选项是在 MySQL 5.1.2 中添加的。在此之前,不会转储存储的例程。直到 MySQL 5.1.8 才转储例程 DEFINER 值。这意味着在 5.1.8 之前,当例程被重新加载时,它们将在创建时将定义器设置为重新加载用户。如果您需要使用其原始定义器重新创建例程,请直接转储并加载 mysql.proc 表的内容,如前所述。
mysqldump -u root -p --routines --databases io \
| sed -e "s/;;/\$\$/g" \
> io.sql
请尝试转储。并将命令导入:
mysql -u root -p --fource --databases io < io.sql