mysqldump不转储存储过程

mysqldump不转储存储过程,mysql,mariadb,Mysql,Mariadb,我执行了以下命令: mysqldump -u root db_name --add-drop-database --routines --verbose > db_name.sql 2>db_name.log 但是当我检查sql文件内容时,没有存储过程创建语法。我还检查了日志文件,收到了相同的结果 有人知道这个问题的根本原因是什么吗?我已经在谷歌搜索过了,找到了这个。但仍然没有解决办法 仅供参考,我正在使用MariaDB 10.2。您可能缺少权限: ·--routines,-R 输

我执行了以下命令:

mysqldump -u root db_name --add-drop-database --routines --verbose > db_name.sql 2>db_name.log
但是当我检查sql文件内容时,没有存储过程创建语法。我还检查了日志文件,收到了相同的结果

有人知道这个问题的根本原因是什么吗?我已经在谷歌搜索过了,找到了这个。但仍然没有解决办法


仅供参考,我正在使用MariaDB 10.2。

您可能缺少权限:

·--routines,-R

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

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


您可能缺少权限:

·--routines,-R

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

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


-R
等同于
--例程
有什么区别吗?不要只使用
-db\u name
,而是使用
--databases db\u name
。谢谢大家的帮助,这是因为我没有授予创建例程权限。并在
--
选项后添加dbname。与
--routines
等效的
-R
有什么区别吗?与其只使用
db\u name
,不如使用
--databases db\u name
。谢谢大家的帮助,这是因为我没有授予创建例程权限。并将dbname放在
--
选项之后。如果缺少该权限,则应引发错误。是的,您是对的,我没有授予创建例程权限,感谢您的帮助:)如果缺少该权限,则应引发错误。是的,您是对的,我还没有授予创建例程权限,谢谢您的帮助:)