DBeaver 崩溃后未保存的 SQL 脚本怎么找回:3 个场景的完整指南
DBeaver 崩溃后未保存的 SQL 脚本怎么找回:3 个场景的完整指南
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
编辑 SQL 脚本时 DBeaver 闪退或意外退出,重开之后文件是空的、内容退回旧版本,很多人第一反应是"白写了"。其实 DBeaver 自带 Local History 本地历史和后台自动保存机制,大部分未保存的脚本都能找回来。这篇文章用大白话讲清原理,并按你崩溃时的实际状态给出对应的找回方法。
📚 为什么找得回来:DBeaver 内置的 3 个兜底机制
编辑器本地历史(Local History)。只要脚本在编辑器里打开过,DBeaver 会按时间自动拍下内容快照存在本地。你没按保存键也没关系,历史面板里通常能看到多个旧版本,这是找回未保存内容最常用的入口。
后台自动保存。DBeaver 会定期启动一个名为 "Auto save all editors" 的后台任务,把所有打开过、改过但没保存的编辑器内容写回磁盘。源码里这样判断当前是否正处于这次自动保存中:
public static boolean isInAutoSaveJob() { Job currentJob = Job.getJobManager().currentJob(); return "Auto save all editors".equals(currentJob.getName()); }用白话说:DBeaver 在后台定时检查"现在是不是轮到自动保存干活了",是的话就把各编辑器里还没保存的内容落到磁盘上,相关实现位于 plugins/org.jkiss.dbeaver.ui.editors.base/。所以崩溃后重开,很多内容其实已经被写进去了。
磁盘上的已保存版本。凡是保存过(包括被自动保存写盘过)的内容,都在文件本身里。文件被误删、被覆盖时,只要本地历史快照还在,就能取回更早的版本。
三者的区别:本地历史对"打开过但没保存"的内容生效,只存在于编辑过它的那台机器;自动保存生效的前提是编辑器还开着、且到点了;磁盘版本则最稳,适合配合外部备份使用。
🔍 未保存的 SQL 脚本怎么找回:按你当前的状态选方法
场景一:应用闪退,但重启后编辑器标签页还在
去哪里:重启 DBeaver,直接点击之前崩溃的脚本对应的编辑器标签页。做什么:观察标签页右上角是否有星号之类的"未保存"标记,再看编辑区里内容是否完整。看到什么算成功:标签页能点开、脚本内容基本完整。这时不要再做其他编辑,直接用"文件 → 另存为"存成一个新文件名。另存后新文件能正常打开、内容齐全,就算找回完成。
场景二:应用已退出,重开原文件内容为空
去哪里:用"文件 → 打开"重新打开那个脚本(即使它是空的也要打开),在编辑区任意位置右键,选择"Local History"(本地历史)→"Show History"(显示历史)。做什么:左侧会列出带时间戳的快照,从最接近崩溃时间的那一条开始往下选(一般是崩溃前几分钟),右侧是内容预览;找到包含完整查询逻辑的那条,右键选"Restore Contents"(恢复内容)。看到什么算成功:编辑区内容变成旧版本,关键语句都在。最后一步必须用"另存为"创建一个新文件,不要把恢复内容直接覆盖回原文件。
场景三:文件被误删,或项目、机器迁移之后
去哪里:DBeaver 的本地历史存放在"最后编辑过它的机器"上的 DBeaver 用户数据目录(用户主目录下的 .dbeaver 等配置目录)里,跟着机器走,不跟文件走。做什么:换机器后,先把旧机器上的 DBeaver 用户目录完整拷到新机器对应位置,再启动 DBeaver,用"文件 → 打开"打开原脚本路径,然后按场景二的方法查看 Local History;如果脚本在 Git 仓库里,更直接——在终端对该目录执行git log查看历史提交,用git checkout把旧版本恢复到工作区。看到什么算成功:历史面板(或 Git 记录)里出现了删除前的内容,恢复后文件行数、结尾的查询语句都和记忆一致。
🛡️ 防丢 SQL 脚本的 4 个日常习惯
- 在"窗口 → 首选项 → 常规 → 工作区"里把自动保存间隔设为几分钟,别用默认的最长档。
- 每写完一段关键查询,随手按一次 Ctrl+S。
- 脚本按版本号命名,如 report_v2.sql,旧版本留着不删。
- SQL 所在目录纳入 Git 管理并定期推远端,这是唯一能跨机器、跨重装的兜底,脚本相关的编辑可以参考 plugins/org.jkiss.dbeaver.ui.editors.sql/ 中 SQL 编辑器的组织方式理解它的定位。
⚡ 速查:当前状态 → 对应方案 → 大致成功率 → 注意事项
| 当前状态 | 对应方案 | 大致成功率 | 注意事项 |
|---|---|---|---|
| 重启后编辑器标签页还在 | 直接看标签页内容,另存为新文件 | 高 | 先确认未保存标记,别急着再编辑 |
| 重开文件是空的 | Local History 快照恢复 | 高(约九成) | 选崩溃前最近的快照,恢复后验证再另存 |
| 文件被误删 | 旧版本磁盘文件 + 本地历史 | 中 | 历史只在原编辑机器上,先拷 DBeaver 用户目录 |
| 跨机器迁移后 | Git 版本恢复 | 取决于是否有仓库 | 没进 Git 的脚本基本依赖原机器的用户目录 |
| 长期重要脚本 | Git 管理 + 远端推送 | 最高 | 防丢篇的习惯建议一次配齐 |
行动清单:崩溃后先重启看标签页,再翻 Local History,别急着新建同名文件;恢复出的内容先核对行数和关键语句;核对无误后一律"另存为"新文件;把自动保存间隔调短;重要脚本目录进 Git。
恢复成功与否的关键不在"找回"这个动作,而在"找回后先验证内容完整,再另存为新文件"——这样做一次,原文件就算被覆盖也不影响已救回的版本。之后养成"先另存、再修改"的习惯,未保存的 SQL 脚本就真的丢不掉了。
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
