我只需要转储存储过程:没有数据,没有表创建。如何使用 mysqldump 执行此操作?
我在更新后备份我的数据库时遇到问题。我一直在我的系统上四处寻找,试图找出原因。我运行的一个查询返回了这个结果。
Got error: 1449: The user specified as a definer ('cittool'@'%') does not exist when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)
经过一些调查,这些视图的定义者似乎是一个已从系统中清除的旧开发者帐户。有这个问题的数据库和视图很少使用,并且大多数被保留用于存档目的。
大约有 40 个视图带有不再存在的定义器。有没有一种简单的方法可以一次性将定义者更改为不同的帐户?有没有办法让 mysqldump 简单地将所有视图转储到一个文件中,以便我可以编辑该文件并重新创建视图?
有没有办法制作一个 mysqldump 来保存指定数据库中的所有触发器和过程?
前段时间我读到这mysqldump也将保存我的触发器,但它看起来不像。我的第二个相关问题是如果触发器存在,我如何检入 sql 文件?
我只使用以下命令转储我的存储过程:
mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt databasename -u username -p > outputfile.sql
Run Code Online (Sandbox Code Playgroud)
但是生成的转储文件在每个过程声明之前不包含 DROP PROCEDURE IF EXISTS。
如何将 drop 查询添加到我的转储中?
谢谢你。
我在恢复数据库中的过程时遇到了问题,所以我所做的就是向我的数据库用户授予超级权限。
该用户与我的网络应用程序中使用的用户相同,因此我想知道向用户授予超级权限是否存在任何危险。