mysqldump 不转储存储过程

bud*_*oip 2 mysql mariadb

我执行了以下命令:

mysqldump -u root db_name --add-drop-database --routines --verbose > db_name.sql 2>db_name.log
Run Code Online (Sandbox Code Playgroud)

但是当我检查sql文件内容时,没有存储过程创建语法。我还检查了日志文件并收到了相同的结果。

有人知道这个问题的根本原因是什么吗?我已经用谷歌搜索并找到了这个https://github.com/sequelpro/sequelpro/issues/517。但仍然没有解决办法。

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

Jac*_*mar 8

您可能缺少权限:

\n\n
\n

\xc2\xb7 --例程,-R

\n\n

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

\n\n

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

\n
\n