首页 > 解决方案 > 如何切换到现有的 SQL 会话?

问题描述

我的代码运行了一些创建临时表的 sql 语句。我的目标是能够在另一个具有应用程序 sql 会话上下文的 sql 控制台/工具/终端中浏览数据库状态(而应用程序线程在调试断点处暂停)。应用程序使用 spring-data/hibernate/mariadb 堆栈。

我找到了如何通过使用 IDE 调试表达式评估器并通过 EntityManager 实例访问数据库来实现它的方法,例如:

em.createNativeQuery("SELECT * FROM rating_per_season").getResultList()

恕我直言,以这种方式查找错误非常不方便。我可以使用另一个控制台以某种方式切换到该 sql 会话吗?当我通过控制台列出进程时:

show processlist;

输出:

[
  {
    "Id": 119,
    "User": "fpsta",
    "Host": "localhost:53198",
    "db": "fp-sta",
    "Command": "Sleep",
    "Time": 1016,
    "State": "",
    "Info": null,
    "Progress": 0
  },
  {
    "Id": 148,
    "User": "fpsta",
    "Host": "localhost:54508",
    "db": "fp-sta",
    "Command": "Query",
    "Time": 0,
    "State": "Init",
    "Info": "/* ApplicationName=IntelliJ IDEA 2019.2.3 */ show processlist",
    "Progress": 0
  }
]

现在我想运行另一个控制台,然后切换到会话 ID:119,然后继续编写我自己的调试 sql 语句。

MAGIC_COMMAND_SWITCH_TO 119;
...

有任何想法吗?

标签: sqlhibernateintellij-ideaspring-data-jpamariadb

解决方案


无法连接到您从代码创建的会话。您只能在打开的 SQL 控制台窗口之间切换会话。但是,您可以在我们的跟踪器上创建功能请求。https://youtrack.jetbrains.com/issues/DBE


推荐阅读