GoLand 的 SQL 控制台历史默认不持久化,关闭后即丢失;真正可长期保存、复用和版本管理的是写在 .sql 文件中的语句,支持执行、重放、参数化及多数据源切换。

GoLand 的 SQL 控制台历史默认不持久化
SQL 查询控制台里执行过的语句,只要没手动保存,关掉 IDE 或重启后就丢了。这不是 bug,是 GoLand 的默认行为——查询控制台 本身是个临时会话窗口,历史只保留在当前会话内存中。
用「查询文件」替代控制台来保留 SQL 历史
真正能长期保存、复用、版本管理的,是写在 .sql 文件里的语句。IDE 会自动记录你在这些文件里执行过的命令,并且支持重放、参数化、多数据源切换。
- 新建一个
queries.sql文件(任意位置,建议放在项目根目录或db/子目录下) - 把想留档的 SQL 粘贴进去,比如
SELECT * FROM users WHERE created_at > '2026-01-01'; - 右键 →
Execute,或按Ctrl+Enter,执行结果会出现在右侧结果面板 - 这个文件会被 Git 跟踪,也能被团队共享,还能加注释说明用途
启用「保存控制台输出到文件」作为辅助手段
如果你非得从控制台里捞历史,可以开启日志导出,但注意:它只记录输出内容(含结果集和错误),不记录执行时间、上下文或参数绑定细节。
- 打开设置:
Ctrl+Alt+S→Tools→Database→Query Execution - 勾选
Save console output to file - 指定路径,比如
$USER_HOME$/go-sql-history.log - 该文件是纯文本追加写入,每次启动 IDE 后新会话会继续追加,需手动清理
别依赖「控制台标签页标题」存逻辑
有人用注释 -- users_active_2026Q3 给控制台标签命名,以为能靠这个识别历史。但标签名只是 UI 显示,不绑定语句内容,也不参与任何持久化机制。一旦选项卡关闭,名字和背后的 SQL 就一起消失。
真正容易被忽略的是:GoLand 的「数据库工具窗口」里没有全局 SQL 历史中心。所有可追溯的执行痕迹,都必须落在 .sql 文件或你主动导出的日志里。控制台只是个快捷沙箱,不是归档系统。


















