#1 楼
这应该为您做到:存储过程将在原本打算的数据库中创建。触发器也是如此。这将是更可取的:mysqldump -h... -u... -p... -n -d -t --routines --triggers --all-databases > MySQLStoredProc.sql
-n, --no-create-db Suppress the CREATE DATABASE ... IF EXISTS statement
that normally is output for each dumped database if
--all-databases or --databases is given.
-d, --no-data No row information.
--triggers Dump triggers for each dumped table.
(Defaults to on; use --skip-triggers to disable.)
-R, --routines Dump stored routines (functions and procedures).
-t, --no-create-info Do not write CREATE TABLE statements that create each
dumped table.
评论
我尝试了这一点,不得不添加'-t'选项以不获取创建表语句。
–德里克·唐尼(Derek Downey)
11年7月25日在16:21
忘了一个,太可惜我不能投票。我更新了第一个mysqldump命令以包括它。应该省略第二个触发器,以将每个触发器与其基表相关联。再次感谢@DTest !!!
– RolandoMySQLDBA
2011年7月25日在16:30
没问题。就我而言,我只是想为特定数据库存储函数/过程,而不是触发器。所以效果很好
–德里克·唐尼(Derek Downey)
2011年7月25日在16:43
评论
这个问题+1,因为数据库世界中有很多开发人员喜欢在MySQL之外的版本控制软件中对存储过程进行编目,而我愿意这样做(我自己不喜欢这样做)。在我的情况下,该命令给我一个错误mysqldump:得到错误:23:“打开文件时资源不足”,我有--single-transaction选项来解决此错误。如果只需要例程,则可以添加--no-create-info以避免创建表语句。