我正在使用intellij和postgres,并突出显示sql命令来运行它们。
我也在我的终端中运行了postgres,并且在intellij中运行时与在终端中运行时相同的查询得到的结果不同。
结果显示存在一个条目:
但是,在终端中运行相同的命令不会显示任何表项。
Intellij和终端连接到Intellij连接设置所示的相同数据库和端口
以及\conninfo
在终端中运行的结果。
此外,模式匹配Intellij的连接设置(如上所示)和终端的\d+ visitor_sign_in
命令的结果
为什么在Intellij中运行时,相同的命令会在终端中运行时给出不同的结果?
答案 0 :(得分:1)
根据您最近的评论(“是的正在运行select * from pg_stat_activity;
确实显示'在交易中闲置'。”),这是我认为正在发生的事情。
您有两个连接,A和B.
A启动事务,插入数据,然后从该表中进行选择。该表显示了数据(刚刚插入的数据)。
B连接,并从同一个表中选择。由于A没有提交,B没有看到该数据。为了使A插入的数据对任何其他连接可见,您需要A来提交其事务。
现在,我不知道为什么IntelliJ没有为您提供提交事务的机会,但缺少提交是导致可见性问题的原因。