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 未转储视图的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 使用 mysqldump 转储SQL格式的数据及重新加载SQL格式的备份
mysqldump - 将多个数据库从不同的 mysql 帐户转储到一个文件