mysqldump 不加 --routines 不会导出函数,该参数同时导出函数和存储过程,恢复需 CREATE ROUTINE 权限并确保 DELIMITER 结构完整及跨版本兼容性。mysqldump 不加 --routines 就不会导出函数默认情况下 mysqldump 只导出表结构和数据,函数、存储过程、触发器这些都属于"routine",必须显式开启开关。不加 --routines,哪怕你用 --all-databases 或指定了具体库,函数定义照样消失。导出时漏掉这个参数,恢复后调用 CALL my_func() 会直接报错 PROCEDURE db.my_func does not exist--routines 会同时导出函数(FUNCTION)和存储过程(PROCEDURE),无法单独只选函数如果只想要函数,导出后得手动从 SQL 文件里删掉 CREATE PROCEDURE 块,别指望 mysqldump 提供过滤选项该参数不依赖 --databases,但建议一起用:例如 mysqldump --routines --databases mydb > backup.sql恢复时权限不足会导致 CREATE FUNCTION 被跳过MySQL 恢复函数时,需要用户有 CREATE ROUTINE 权限;否则 source backup.sql 或 mysql < backup.sql 过程中,遇到 CREATE FUNCTION 语句会静默失败或报错 ERROR 1418 (HY000),而后续的表数据可能照常导入,造成"看起来恢复成功,实则函数丢了"的假象。检查当前用户权限:SHOW GRANTS FOR CURRENT_USER;,确认含 GRANT CREATE ROUTINE ON *.* TO ...临时启用 log_bin_trust_function_creators=1(仅当启用了二进制日志且函数非确定性时才需),否则可能卡在 ERROR 1418不要用普通应用账号恢复,优先用 root 或明确授过 CREATE ROUTINE 和 ALTER ROUTINE 的账号函数体里含分号会破坏 mysqldump 输出的 SQL 格式mysqldump 导出函数时,会自动把 DELIMITER 切换逻辑写进 SQL 文件(比如先设为 $$,再还原)。但如果函数定义本身没按规范写------比如函数体里用了未转义的分号、或者 DELIMITER 写错位置------会导致导出的 SQL 文件语法错误,恢复时报 ERROR 1064。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
点云-激光雷达-Slam-三维牙齿1 小时前
速度起飞 笔记本电脑6G显卡llama运行Qwen3.6 35BA3B MTP 大模型言乐62 小时前
Python游戏水平测试辅助系统小白勇闯网安圈8 小时前
Django 响应对象、文件上传与类视图从零开始学习人工智能8 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题努力的小雨9 小时前
同一份 SQL 跑多套环境:Ksql 变量怎么用才安全科技绘图10 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比卷无止境10 小时前
在 awesome-fastapi 里,哪些库值得一看?ltl10 小时前
数据库作为 LLM 记忆体:语义缓存、RAG 与一致性ltl10 小时前
WAL 与崩溃恢复:ARIES 协议怎么跑通ltl10 小时前
TEE 数据库:EnclaveDB、Oblivious 原语与机密 SQL