当前位置: 首页 > news >正文

JavaEdge

2025.3版本开始,DataGrip 以及其他带有数据库支持的 JetBrains IDE 将不再使用「查询控制台(query console)」这个名称。从现在起,将改用「查询文件(query file)」,因为控制台本质上一直就是文件,现在终于让 UI 与事实保持一致。还优化了整个工作流程,让操作更简单、更直观,也更统一。

1 历史回顾

为啥当初有「控制台」概念?JetBrains 第一次在 IntelliJ IDEA 中加入数据库功能时,大多 Java 开发者都是通过终端操作数据库。为了尽快在 IDE 中复现这种工作方式,JetBrains 为用户提供了一个可以临时编写 SQL 的区域——这个临时 SQL 文件就被称为控制台(console)

多年来,IDE 每个项目只提供一个默认控制台,似乎也够用。但随时间推移,用户提出更多需求,如希望能创建多个控制台、能选择数据库或 schema,以及希望能通过 UI 更方便切换上下文。

2 存在的问题?

控制台本质就是脚本文件,与其他数据库工具提供的脚本文件类似,但有一些让人困惑的地方:

  • 不属于项目结构。控制台文件存在于项目结构之外,虽然用户其实是在项目中工作。
  • 不容易找到。它们被保存在一个隐蔽的文件夹中(和临时文件 scratch files在一起),这让很多人创建了控制台却找不到保存位置。由于 DataGrip 会自动保存控制台文件,内容不会丢失,但这也让定位变得更困难。因为不会弹出「保存」提示,用户经常一头雾水找不到自己创建的控制台,也无法轻松切换上下文
  • 上下文切换麻烦。无法通过 UI 修改控制台的 SQL 方言、数据源或 schema。如果想让它像普通文件一样工作,就得手动保存或迁移
  • 名称让人误解。「查询控制台」这个词并不能准确表达它的功能,新用户经常因此感到困惑

总的来说,控制台的理念不错,但在实际使用中却不够方便——是时候做出改变了。

3 变更内容

经过反复思考,最终做最自然选择:把控制台与文件合并

现在,查询操作完全基于文件形式,查询文件(query files)会显示在项目中,更容易找到,也更方便管理。

具体变化如下:

想对数据库执行查询时,可像以前一样,从数据源或其对象的右键菜单创建查询文件。新文件会命名为Query_[N].sql,命名规则可在「设置」中自定义。

默认情况下,查询文件保存在项目文件夹下的queries文件夹。该文件夹可在「文件(Files)」工具窗口中查看。也可在「设置」中更改保存路径,选择的自定义文件夹也会在工具窗口中显示。

现在,绑定了数据库上下文的文件会显示一个类似数据源的图标,而不再是之前的通用数据库图标,更易区分查询文件。

以前控制台的限制全部取消!现可重新绑定查询文件、修改 SQL 方言或数据源,并像操作普通项目文件一样使用它。

数据库资源管理器工具栏上的「跳转到查询控制台(Jump to Query Console)」按钮已更名为「跳转到查询文件(Jump to Query File)」,并换上了新图标。它现在会列出与当前数据源相关的所有查询文件。

升级到新版 DataGrip 时,会出现迁移对话框,帮助你将所有旧控制台迁移为查询文件,并引导你适应新的工作流程。

临时文件与控制台(Scratches and Consoles)下的旧Database Consoles文件夹会暂时保留一个版本周期,之后将被彻底移除。

4 FAQ

现有控制台会丢失吗?
不会。会将它们安全地转换为.sql文件,并保存在原位置以确保安全。

还能保持原来的行为吗?
技术上可以,但仅限于旧项目,并且只在下一个版本周期内有效。每次重启 IDE 时仍会出现迁移提示框,不过你可以选择「不再显示」。对于新项目,只会启用新逻辑。

全局数据源(global data sources)的控制台会怎样?
在迁移对话框中,你可为这类数据源指定单独的迁移文件夹。这个文件夹会保存到设置中,并作为今后全局数据源查询文件的默认位置。要在 IDE 中访问这些文件,需要将该文件夹手动挂载到具体项目中。

其他 JetBrains IDE 也会这样吗?
会,但目前仅在 DataGrip EAP 中发布。其他带数据库功能的 JetBrains IDE 会自动将查询文件迁移到项目下.idea子文件夹中,这个文件夹通常会被.gitignore忽略。

http://www.gsyq.cn/news/1610092.html

相关文章:

  • MCP协议:让销售预测从实验室走向产线的工程范式
  • ROFL-Player:英雄联盟回放文件的终极解析工具
  • Java毕业设计-基于 SpringBoot 的高校学生心理健康管理系统的设计与实现 基于 SpringBoot 的大学生心理健康测评管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • Selenium弹框定位全攻略:原生Alert与自定义模态框处理方案
  • 3步解锁网易游戏NPK文件:unnpk深度解析与实战指南
  • 3分钟开启专业虚拟背景:OBS背景移除插件终极指南
  • 手算线性回归:从公式推导到Python零依赖实现
  • 扩散模型原理解析:从噪声到图像的去噪生成机制
  • Gitleaks实战指南:原理、配置与CI/CD集成,守护代码仓库安全
  • AI代理运行时基础设施:可审计、可恢复的生产级Agent Runtime
  • 零基础Appium自动化测试入门:环境搭建、脚本编写与框架设计实战
  • AI安全能力管控:模型输出过滤与上下文隔离技术解析
  • 如何用adb 查看设备是debug版本还是user版本?
  • 线性回归:可解释性驱动的业务建模基石
  • 【操作系统】死锁的基本概念与必要条件
  • AI代理运行时:从事件日志到凭证隔离的工程范式
  • PKHeX-Plugins:宝可梦数据自动化校验与生成引擎的技术架构深度解析
  • AI神话拆解指南:从能力边界到落地现实
  • Python自动化测试实战:从零到一构建测试框架的完整学习路径
  • 机器学习数据量真相:不是数量,而是信息精度与任务匹配度
  • 从SocialFish钓鱼攻击原理到企业级安全防护体系构建
  • C# Web自动化测试进阶:从Selenium到Atata框架的实践指南
  • PC端UI自动化实战:PyWinAuto框架搭建与疑难问题全解析
  • 别再死记硬背了!用这10个真实业务场景,彻底搞懂Neo4j Cypher的WITH、UNWIND和CASE
  • 从英文菜鸟到中文高手:我的Axure RP汉化奇妙之旅
  • 图神经网络如何实现精准ETA预测
  • 从手动测试到AI驱动自动化:QA工程师的转型路径与实战指南
  • GD32F30x实战:独立看门狗和窗口看门狗到底怎么选?附超时计算与避坑指南
  • Postman接口测试自动化:Cookie自动携带实现与实战指南
  • GPT-4稀疏激活原理:2%参数如何驱动1.8万亿模型