上一篇
最近MySQL 8.4发布了新功能强化了数据安全保护(2025年8月更新),但有时候开发者仍需彻底清理测试数据库,今天手把手教你三种「核弹级」清库方法,附赠防翻车指南!💣
以下操作会永久删除数据
👉 执行前务必:
1️⃣ 确认连接的是测试/开发环境数据库
2️⃣ 备份关键数据(mysqldump -u root -p 数据库名 > backup.sql
)
3️⃣ 关闭所有正在运行的业务程序
-- 登录MySQL后执行: SET FOREIGN_KEY_CHECKS = 0; -- 临时关闭外键约束 SELECT CONCAT('DROP TABLE IF EXISTS `', table_name, '`;') FROM information_schema.tables WHERE table_schema = '你的数据库名'; -- 这里一定要改! SET FOREIGN_KEY_CHECKS = 1;
操作说明:
USE 你的数据库名; SELECT CONCAT('DROP TABLE ', table_name, ';') FROM information_schema.tables WHERE table_schema = DATABASE();
效果:比双十一清空购物车还爽快 🛒💨
mysql -u root -p -Nse 'SHOW TABLES' 你的数据库名 | while read table; do mysql -u root -p -e "DROP TABLE $table" 你的数据库名; done
注意:
• 会连续弹出密码输入提示
• 添加 -e "SET FOREIGN_KEY_CHECKS=0;"
可避免外键报错
❌ 报错1217:外键约束阻止删除
✅ 解决方案:先执行 SET FOREIGN_KEY_CHECKS=0;
❌ 误删生产库:
✅ 紧急恢复:用备份文件执行 mysql -u root -p 数据库名 < backup.sql
• 想保留特定表?在SQL末尾添加 AND table_name NOT LIKE '%保留表名%'
• 清空表数据但保留结构:把 DROP
换成 TRUNCATE
MySQL 8.4开始,默认启用--ddl-ddl-ddl
保护机制,执行批量删除前可能需要先:
SET GLOBAL override_ddl_protection=1; -- 临时解除保护
本文由 艾梦菲 于2025-08-02发表在【云服务器提供商】,文中图片由(艾梦菲)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/512200.html
发表评论