Phpmyadmin导出VIEW而不使用DATABASE_NAME或ALGORITHM

Joh*_*lia 8 php mysql phpmyadmin

使用phpmyadmin导出sql转储时,它会像这样创建VIEW表:

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER 
VIEW `database`.`table` etc..
Run Code Online (Sandbox Code Playgroud)

每次我都要手动编辑sql dump来删除root用户和database名称.

Evi*_*dan 13

也许我不理解......但这一直对我有用.没有对数据库名称的引用,并且所有定义器都被清除,因此从它生成的文件中恢复非常容易:

mysqldump -uUSERNAME -pPASSWORD database |  sed -e 's/DEFINER=[^*]*\*/\*/' > backup.sql
Run Code Online (Sandbox Code Playgroud)

恢复:

mysql -uUSERNAME -pPASSWORD database < backup.sql
Run Code Online (Sandbox Code Playgroud)

只要您要恢复的数据库存在(空或不存在),就像魅力一样.


dee*_*lue 1

只花了 8 年时间,但 phpmyadmin 现在包含一个选项来防止此问题:-

排除当前用户的定义

它出现在“创建视图”部分下,选择它,您将获得正常工作的摘录。