{"id":598617,"date":"2025-09-16T17:46:20","date_gmt":"2025-09-16T16:46:20","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=datagrip&#038;p=598617"},"modified":"2026-01-29T14:52:14","modified_gmt":"2026-01-29T13:52:14","slug":"a-farewell-to-consoles","status":"publish","type":"datagrip","link":"https:\/\/blog.jetbrains.com\/en\/datagrip\/2025\/09\/16\/a-farewell-to-consoles","title":{"rendered":"A Farewell to Consoles"},"content":{"rendered":"\n<p><mark style=\"background-color:#ffffff\" class=\"has-inline-color has-vivid-red-color\"><strong>IMPORTANT!<\/strong><br><strong>We reverted the described change. More details are here:<br><a href=\"https:\/\/blog.jetbrains.com\/datagrip\/2025\/12\/18\/query-consoles-are-coming-back\/\">https:\/\/blog.jetbrains.com\/datagrip\/2025\/12\/18\/query-consoles-are-coming-back\/<\/a><\/strong><\/mark><br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n\n\n\n<p>Starting from the 2025.3 release, DataGrip and other JetBrains IDEs with database support will stop using the term <em>query console<\/em>. From now on, we\u2019ll use <em>query file<\/em><strong> <\/strong>\u2013 because consoles were essentially files all along, and it\u2019s time the UI reflected that. We&#8217;ve made the workflow simpler, more discoverable, and more consistent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A bit of history \ud83c\udfdb\ufe0f<\/h2>\n\n\n\n<p>Why did we have consoles in the first place? Here\u2019s the short story.<\/p>\n\n\n\n<p>Back when JetBrains first added database functionality to IntelliJ IDEA, Java developers mostly worked with databases from the terminal. The quickest way to bring that workflow into the IDE was to give people a temporary area for writing SQL \u2013 and that temporary SQL file was called a <em>console<\/em>.<\/p>\n\n\n\n<p>For many years, the IDE provided just one default console per project, and that seemed fine, but users asked for more. They wanted <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-56\/More-than-one-console-editor\" target=\"_blank\" rel=\"noopener\">multiple consoles<\/a>, the ability to pick the database or schema, and better <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-65\/Database-console-clear-way-to-select-a-database-using-the-UI\" target=\"_blank\" rel=\"noopener\">control over context<\/a> via the UI.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Problems \ud83d\ude35\u200d\ud83d\udcab<\/h2>\n\n\n\n<p>Consoles were essentially script files, similar to what other database tools provide, but with a few quirks:<\/p>\n\n\n\n<ul>\n<li><strong>Not part of the project.<\/strong> Consoles lived outside the project structure, even though users worked in a project in DataGrip.<\/li>\n\n\n\n<li><strong>Hard to find.<\/strong> They were stored in an obscure folder (next to <em>scratch files<\/em>), causing people to create consoles and then not know where to look for them. Because DataGrip autosaves these consoles, nothing was lost \u2013 but that made discovery more difficult. Users wouldn\u2019t get a \u201csave\u201d prompt, so they\u2019d create consoles and later be surprised they couldn\u2019t find them or change their context without extra steps.<\/li>\n\n\n\n<li><strong>Difficult context switching.<\/strong> You couldn\u2019t change the dialect, data source, or schema for a console file via the UI. If you wanted it to behave like a local file, you had to manually save or transfer it.<\/li>\n\n\n\n<li><strong>Confusing name.<\/strong> The term <em>query console<\/em> didn\u2019t communicate what the feature actually was, and we kept getting feedback that newcomers didn\u2019t understand it.<\/li>\n<\/ul>\n\n\n\n<p>In short, consoles were useful in spirit but awkward in practice. Something had to change.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The change \ud83e\uddda\ud83c\udffb\u200d\u2640\ufe0f<\/h2>\n\n\n\n<p>We agonized, deliberated, and then did the obvious: merged consoles and files.<br><br>Practically, query editing is now file-based, so <em>query files<\/em> are visible in your project, easy to locate, and flexible to manage.<\/p>\n\n\n\n<p>How it works now:<\/p>\n\n\n\n<ul>\n<li>To write a query to the database, create a query file from the context menu of the data source or any of its objects, like you did before with query consoles. This new file will be named <em>Query_[N].sql<\/em>.  The name pattern can be customized in <em>Settings<\/em>.<br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1818\" height=\"752\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/Untitled-1.png\" alt=\"\" class=\"wp-image-651561\"\/><\/figure>\n\n\n\n<ul>\n<li>By default, query files are saved in the <em>queries <\/em>folder<em>, <\/em>which is located in the project folder. The project folder (and the <em>queries<\/em> folder) is visible in the <em>Files<\/em> tool window. You can change the storage path in <em>Settings<\/em>, and any custom folder you select will also appear in the <em>Files<\/em> tool window.<br><\/li>\n\n\n\n<li>Files with an attached database context now show a data-source-like icon instead of the generic database icon used before. This should make query files easier to spot. We\u2019d especially love to hear your feedback about this visual update.<br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1560\" height=\"674\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/CleanShot-2025-10-20-at-14.26.35-2x.png\" alt=\"\" class=\"wp-image-651584\"\/><\/figure>\n\n\n\n<ul>\n<li>All prior console limitations are gone! You can now re-attach query files, change their dialect and data source, and treat them like ordinary project files.<br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1604\" height=\"940\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AttachFile.png\" alt=\"\" class=\"wp-image-599525\"\/><\/figure>\n\n\n\n<p><br><\/p>\n\n\n\n<ul>\n<li>The <em>Jump to Query Console<\/em> button on the database explorer toolbar has been renamed to <em>Jump to Query File <\/em>and given a new icon. It now lists all query files associated with the current data source.<br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1630\" height=\"800\" data-id=\"651635\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/CleanShot-2025-10-20-at-14.16.34-2x-1.png\" alt=\"\" class=\"wp-image-651635\"\/><\/figure>\n<\/figure>\n\n\n\n<ul>\n<li>When you upgrade DataGrip, a migration dialog will help you transfer all of your consoles to files and guide you through the new workflow.<br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1744\" height=\"1322\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/CleanShot-2025-10-20-at-14.18.56-2x.png\" alt=\"\" class=\"wp-image-651606\"\/><\/figure>\n\n\n\n<ul>\n<li>The old <em>Database Consoles<\/em> folder under the <em>Scratches and Consoles<\/em> will remain for one more release cycle, after which we\u2019ll remove it completely.<br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1512\" height=\"580\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/CleanShot-2025-10-20-at-14.27.20-2x.png\" alt=\"\" class=\"wp-image-651617\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ \u2753<\/h2>\n\n\n\n<p><strong>Will my existing consoles be lost? <\/strong><strong><br><\/strong><\/p>\n\n\n\n<p>No. We\u2019re carefully converting them to <em>*.sql<\/em> files and keeping them in the old location to be on the safe side.<\/p>\n\n\n\n<p><br><strong>Can I keep the old behavior?<br><br><\/strong>Technically, you can, but only for one more release cycle and only for old projects. You will keep seeing a migration dialog after each IDE restart, however. Or check <em>Never show again<\/em> option. For new projects, only the new logic will work.<\/p>\n\n\n\n<p><strong>What happens to the consoles of <\/strong><a href=\"https:\/\/www.jetbrains.com\/help\/datagrip\/managing-data-sources.html#share-data-sources-between-different-projects\" target=\"_blank\" rel=\"noopener\"><strong>global data sources<\/strong><\/a><strong>?<\/strong><\/p>\n\n\n\n<p>In the migration dialog, you will be able to define a separate folder for migrating consoles of such data sources. This folder will be saved in the settings and will serve as the default location for query files created for global data sources. To access these files from the IDE, you will need to attach the folder to each specific project.<\/p>\n\n\n\n<p><strong>Will the same thing happen in other JetBrains IDEs?<\/strong><\/p>\n\n\n\n<p>Yes, but for now it&#8217;s only released in DataGrip EAP. The only difference is that in other JetBrains IDEs with database functionality, query files are migrated by default to a folder inside the <em>.idea <\/em>subfolder within the project. This folder is usually listed in <em>.gitignore.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s next \u23ed\ufe0f<\/h2>\n\n\n\n<p>Later in this 2025.3 release cycle, we&#8217;ll add a <em>Query Files<\/em> node to the database explorer. Clicking it will show all files associated with the current data source, further improving discoverability.<\/p>\n\n\n\n<p>We&#8217;re rolling out this change in the first EAP build to gather feedback from our community. Please try it out and tell us what\u2019s missing.<br><\/p>\n\n\n\n<p>Let us know what you think in any of these ways:<\/p>\n\n\n\n<ul>\n<li>Comment in the corresponding <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-23186\" target=\"_blank\" rel=\"noopener\">YouTrack ticket<\/a><\/li>\n\n\n\n<li>Complete the feedback form: <a href=\"https:\/\/www.jetbrains.com\/feedback\/datagrip\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.jetbrains.com\/feedback\/datagrip\/<\/a><\/li>\n\n\n\n<li>Email us at <a href=\"mailto:datagrip@jetbrains.com\">datagrip@jetbrains.com<\/a><\/li>\n\n\n\n<li>Tag @DataGrip on X or follow <a href=\"https:\/\/x.com\/datagrip\" target=\"_blank\">https:\/\/x.com\/datagrip<\/a><\/li>\n<\/ul>\n\n\n\n<p>We look forward to hearing your feedback!<\/p>\n\n\n\n<p>The DataGrip team<\/p>\n","protected":false},"author":395,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","categories":[],"tags":[],"cross-post-tag":[8851],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/598617"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/datagrip"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/395"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=598617"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/598617\/revisions"}],"predecessor-version":[{"id":677519,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/598617\/revisions\/677519"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=598617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=598617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=598617"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=598617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}