在我的数据库备份和导出中,我得到如下内容:
/*!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 ... */;
由于" CREATE ALAGORITH"和#34; DEFINER"尝试恢复时部件失败。有没有办法让mysqldump
只做一个简单的CREATE VIEW
?
奖金问题:/*!50001
部分是什么意思?
编辑:我应该补充一点,这是我得到的错误:
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
编辑2:似乎只有/*!50013 DEFINER=
部分失败。
答案 0 :(得分:4)
/ *!50001部分是版本号。
这个问题已在这里得到解答:MySQL flags in dumps
删除DEFINER的主要问题最好用脚本完成。一些已在线的例子:
https://dbperf.wordpress.com/2010/04/12/removing-definer-from-mysql-dump/
答案 1 :(得分:0)
这个 sed 命令应该可以从 mysqldump 中删除这两个子句 -
sed -e 's|^/[*]!50001 CREATE ALGORITHM=UNDEFINED [*]/|/*!50001 CREATE */|' -e '/^[/][*]!50013 DEFINER=/d'
其中 50001 和 50013 分别是上面已经提到的版本。