mysqldump 未转储视图

Posted

技术标签:

【中文标题】mysqldump 未转储视图【英文标题】:Views not being dumped by mysqldump 【发布时间】:2012-02-29 00:31:33 【问题描述】:

我希望 mysqldump 转储视图。我正在从 php 运行以下 mysqldump 命令:

mysqldump -h127.0.0.1 -uroot -proot --database main -R --extended-insert=FALSE --complete-insert=TRUE

而且它似乎没有转储视图(我使用 CREATE VIEW 创建的)。如何让它转储视图和表格?

【问题讨论】:

【参考方案1】:

根据this,您可能会遇到视图问题,因为您没有数据库的显式 SHOW VIEW 权限。

“解决该问题的方法是管理员手动将 SHOW VIEW 权限授予被授予 CREATE VIEW 的用户,因为 MySQL 在创建视图时不会隐式授予它。”

在所有其他情况下,视图应该在生成的转储文件中...虽然有点奇怪...它首先为视图创建临时表结构,然后是视图本身。这是因为可以在视图上创建视图......而对于 mysqldump,无法知道发生的顺序,所以它创建临时表,以避免在执行 dumpfile 以恢复数据库时出错。

【讨论】:

我会尝试添加 SHOW VIEW 权限,看看它是否有效。【参考方案2】:

这对我有用

mysqldump --skip-comments --skip-opt --complete-insert --add-drop-table --database dbname -p

【讨论】:

以上是关于mysqldump 未转储视图的主要内容,如果未能解决你的问题,请参考以下文章

使用 'mysqldump' 以 CSV 格式转储所有表

MySQL 使用 mysqldump 转储SQL格式的数据及重新加载SQL格式的备份

如何从 mysqldump 恢复转储文件?

mysqldump - 将多个数据库从不同的 mysql 帐户转储到一个文件

如何使用 kubernetes 从 mysqldump 恢复转储文件?

mysqldump 转储完整模式所需的最小授权? (触发器不见了!!)