首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有“创建算法”和“定义器”的mysqldump

没有“创建算法”和“定义器”的mysqldump
EN

Stack Overflow用户
提问于 2014-09-19 01:06:23
回答 2查看 9.5K关注 0票数 12

在我的数据库备份和导出中,我得到了如下内容:

代码语言:javascript
复制
/*!50001 DROP TABLE `vTime`*/;
/*!50001 DROP VIEW IF EXISTS `vTime`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`db_user`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `vTime` AS select ... */;
  1. 这会导致还原时出现问题,因为“创建算法”和“定义器”部件在试图恢复时失败。有没有办法让mysqldump只做一个简单的CREATE VIEW呢?
  2. 附加问题:/*!50001部件意味着什么?

编辑:--我应该补充一下,这是我得到的错误:

#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation

编辑2:似乎只有/*!50013 DEFINER=部件失败了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-20 15:48:49

/*!50001部件是版本号。

这里已经回答了这个问题:MySQL flags in dumps

删除定义器的主要问题是最好用脚本来完成。已经在网上的一些例子:

https://dbperf.wordpress.com/2010/04/12/removing-definer-from-mysql-dump/

Remove DEFINER clause from MySQL Dumps

票数 4
EN

Stack Overflow用户

发布于 2021-05-24 14:32:23

这个sed命令应该用于从mysqldump中删除这两个子句-

代码语言:javascript
复制
sed -e 's|^/[*]!50001 CREATE ALGORITHM=UNDEFINED [*]/|/*!50001 CREATE */|' -e '/^[/][*]!50013 DEFINER=/d'

如上文所述,其中50001和50013是各自的版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25924796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档