1

我已经备份了 mysql 数据库,但是当我尝试恢复它时,我的存储过程没有得到恢复。有什么方法可以像我们在 mysqldump 命令中使用 --routines 一样进行备份。我们可以在mysql中做任何这样的事情吗?

如果我使用 mysqldump 那么它只是转储 mysql 表,但如果我使用 mysql 命令进行恢复,那么它会给我一个错误 - 第 3062 行的 ERROR 1064 (42000): You have an error in your SQL syntax; 检查与您的 MySQL 服务器版本相对应的手册,以在第 6 行的 'USING BTREE ) ENGINE=MyISAM DEFAULT CHARSET=latin1' 附近使用正确的语法。

提前致谢

4

2 回答 2

3

一种解决方案是在没有数据的情况下转储模式,对“USING BTREE”进行搜索替换,创建数据库,然后在没有表定义的情况下加载转储。

或者,在 un*x shell 上,假设您有可用的 perl,这可以直接使用完整转储并使用 perl(或 awk、sed、ruby...)过滤文件来完成,如下所示:

cat name-of-dump.sql | perl -pe 's/USING BTREE//' | mysql name_of_db

或者如果您转储被压缩:

zcat name-of-dump.sql.gz | ...
于 2012-05-17T18:20:53.210 回答
2

您正在将 5.1 备份恢复到 5.0 实例。如果您想将此转储加载到 5.0.0 中,则必须从表定义中删除“USING BTREE”。

于 2009-07-03T12:00:40.063 回答