mysqldump 默认导出视图,无需额外参数,但需确保不加--skip-views;导出触发器需--triggers(默认启用),导出函数/存储过程需--routines,解决DEFINER权限问题应使用--skip-definer。mysqldump 默认不导出视图定义,必须加 --no-create-info 或 --skip-triggers 吗?不是。默认情况下 mysqldump 会导出视图,但有个关键前提:你得用 --routines(导出存储过程/函数)和 --triggers(导出触发器)------而视图本身不需要额外开关,只要不加 --skip-views 就行。容易踩的坑是误以为视图像触发器一样需要显式开启,结果漏掉 --triggers 却以为"视图已备份",实际触发器一行都没进 SQL 文件。--skip-views 是关闭视图导出的开关,**默认不启用**,所以通常不用管--triggers 是导出触发器的开关,**默认启用**,但某些旧版本 MySQL 或特定权限下可能被禁用如果目标库有 DEFINER 权限限制,导出的视图 SQL 可能含 DEFINER=`user`@`host`,还原时容易报错 Access denied; you need (at least one of) the SUPER privilege(s)解决 DEFINER 问题最稳的方式是加 --skip-definer(MySQL 5.7.8+)或用 sed 替换,而不是靠 --no-create-info ------后者会删掉建表语句,完全不可取备份带触发器的表时,--triggers 和 --skip-triggers 怎么选?绝大多数情况直接用 --triggers(它本来就是默认值),除非你明确想跳过触发器逻辑。注意:触发器是绑定在具体表上的,所以如果你只 dump 某几张表(比如 mysqldump db t1 t2),那只有这些表关联的触发器会被导出;如果 dump 整库(mysqldump db),所有触发器都会进来。用 --skip-triggers 会导致触发器定义彻底消失,还原后表存在但行为缺失,线上环境慎用若还原库权限受限(如无 SUPER 权限),触发器创建会失败,错误信息类似:ERROR 1227 (42000) at line XXX: Access denied; you need the SUPER privilege for this operation临时绕过方法:dump 时加 --skip-definer,或还原前手动删掉 SQL 文件里所有 DEFINER=... 字段视图依赖其他视图或函数时,mysqldump 会自动处理依赖顺序吗?不会。mysqldump 按字典序输出对象,不分析依赖关系。如果 v2 依赖 v1,而 v1 在文件里排在后面,还原时 CREATE VIEW v2 就会报错 Unknown table 'db.v1'。 Murf AI AI文本转语音生成工具
相关推荐
曲幽7 小时前
FastAPI 身份验证总踩坑?这份 FastAPI Users “避坑指南”请收好素材积累7 小时前
博士后出站来深可申请的项目补贴等装不满的克莱因瓶7 小时前
掌握 RNN 与 LSTM 模型结构何以解忧,唯有..7 小时前
Python包管理工具pip:从入门到精通金銀銅鐵7 小时前
用 Tkinter 实现简单的猜数字游戏copyer_xyf8 小时前
Python 模块与包的导入导出_1_78 小时前
SQL Server 磁盘满了 收缩日志ice8130331818 小时前
【Python】Matplotlib折线图绘制copyer_xyf8 小时前
Python venv 虚拟环境basketball6168 小时前
Redis基础:1. Redis介绍