问题:两种方法连接达梦数据库查询结果不一样

一、问题描述

        简单描述一下问题的情况:使用达梦的数据库管理工具连接本地达梦数据库  和  使用IDEA连接本地达梦数据库  对同一个表的查询结果不一样。   

        注意使用的是同一个用户,修改查找的也是同一个表

二、两个会话窗口的第一次查询结果

acc4a7a28b104edfaf42cf1079d231a9.png

可以看到TEST表的结构只有两个字段一个是id,一个是name,查找的结果是最初的三条数据

c2c545ce9744404897776dd8e1b198a2.png

可以看到第一次查询时两个会话窗口的查询结果都相同

三、两个会话窗口的第二次查询结果

        在查询之前首先在IDEA的控制台中输入命令插入一条数据(19,'zhaoliu')

ac6fe357ea1449daae55d98bfd032c95.png

05ff12ebbbe74203a2ccd4c589147fbd.png

可以看到第二次查找时,两个会话窗口查找到的内容也是一样的

四、两个会话窗口的第三次查找结果

        在第三次查找之前在达梦的数据库管理中再使用插入语句插入一条内容(20,'liuqi')

7f09b838bc9d4cccabdb2bb3c284d5da.png

5295a322a4924fb58de7ab10d4358b99.png

这时候发现,IDEA中的查找结果和达梦自带的数据库管理工具的查找结果不一样了......

五、原因

        达梦数据库中涉及到一个提交和回滚的概念,在达梦自带的数据库管理工具中使用的更新、删除、插入等sql语句统统都会被放到一起作为一个事务,只有事务提交之后,才会真正对数据库作出修改,否则的话做的操作统统都是无效操作。

        那么还有一个问题,既然事务要提交之后才会对数据库作出修改,那么为什么第三次查询的时候,IDEA中查不到结果,但是达梦自带的管理工具却能查找到结果呢?原因很简单,就是因为一个事务中即便不提交也可以查找到提交后才会展示的结果,但是啊,不同的会话窗口是不属于同一个事务的,就像IDEA连接达梦和达梦自带的管理工具连接达梦一样,他们不属于同一个事务,所以呢,DM管理工具不提交之前,IDEA中都是查找不到DM管理工具中对数据做出的修改的。

        友情提示:IDEA的查询控制台中不需要使用commit语句来提交事务,具体原因不清楚,可能是因为已经被封装好,只需要我们写sql语句。

六、解决

在DM管理工具中对之前的修改做出提交,然后再次在两个会话中查询结果:

4d6bff0e99d54d6ab99763fb694d12aa.png

 07de3bd44ffe40ac87e6ea2a4e3a3734.png

 可以看到,在DM管理工具中对修改做出提交之后,IDEA中就可以正常查找到结果了!

        作为一个只会使用MySQL的菜鸟,这个问题着实让我困惑了一段时间。

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 当使用DBeaver连接数据库时,如果无法看到表格,可能有以下几个原因: 1. 权限问题:确保您使用的数据库账户具有足够的权限来访问和查看表格。您可能需要联系数据库管理员,以获取适当的权限。 2. 数据库过滤:检查是否启用了数据库过滤器。有时,数据库管理员会配置过滤器来限制特定用户或客户端只能查看特定的表格。您可以尝试通过在DBeaver中取消勾选“过滤器”选项来解决此问题。 3. 刷新缓存:如果在数据库中进行了最近的更改,但在连接到DBeaver后仍无法看到表格,请尝试刷新缓存。在DBeaver中,可以尝试从“数据库”菜单中选择“刷新数据库”。 4. 表格不存在:确保您正在连接到正确的数据库和模式,并且表名的大小写和拼写与实际数据库中的表格匹配。如果表格确实不存在,请联系数据库管理员确认表格是否已正确创建。 如果您尝试了以上解决方法仍无法解决问题,建议您检查DBeaver的日志文件,查看是否有任何错误或异常信息。 ### 回答2: 当使用DBeaver连接数据库时,可能会遇到无法看到表的问题。以下是一些可能的原因和解决方法: 1. 数据库权限问题:确保连接数据库的用户具有足够的权限来查看表。可以使用管理员账户或具备足够权限的账户来连接数据库,以确保能够看到所有表。 2. 数据库过滤设置:在DBeaver中,有可能设置了数据库对象过滤器,导致某些表被隐藏。可以检查DBeaver的设置,确保过滤设置正确,并且未将表对象过滤掉。 3. 数据库表所在的模式或用户不可见:在数据库中,表可以放置在不同的模式或用户下。如果连接数据库时未指定正确的模式或用户,可能无法看到表。可以尝试在连接设置中明确指定表所在的模式或用户,并重新连接数据库。 4. 数据库连接问题:可能是数据库连接设置有问题,导致无法正确连接数据库。可以检查连接设置,确保数据库服务器、端口、用户名和密码正确,并且没有任何网络连接问题。 如果上述方法都未能解决问题,可以尝试使用其他数据库工具连接数据库,如Toad for DataPoint、Navicat等。这些工具可以提供更多的连接选项和调整配置的可能性。 总之,无法在DBeaver中看到数据库表的问题可能是由于权限、过滤设置、模式或用户可见性以及连接设置等问题导致的。通过检查和调整这些方面,可以解决该问题。 ### 回答3: 如果在使用DBeaver连接数据库时无法看到表,可能有以下几种原因: 1. 数据库连接设置错误:首先,确保已正确配置DBeaver的数据库连接。检查连接参数,如主机名、端口号、数据库名称、用户名和密码等。确保这些参数正确无误。 2. 用户权限不足:可能是由于当前连接数据库用户没有足够的权限来查看表的原因。请确保使用的数据库用户具有足够的权限来查看表。你可以使用其他工具,如数据库管理工具或命令行客户端,以确保用户有访问权限。 3. 数据表所有者不正确:如果表是由其他用户创建的,并且当前连接的用户没有权限查看其他用户创建的表,那么你将无法看到这些表。在DBeaver中,你可以尝试使用表限定符来查看其他用户创建的表,例如"用户名.表名"。 4. 元数据刷新问题:有时候,DBeaver可能无法正确识别并刷新数据库的元数据,导致无法正确显示表。你可以尝试刷新元数据或重新连接数据库以解决这个问题。在DBeaver中,你可以右键点击数据库连接,然后选择"刷新元数据"来尝试刷新数据库的元数据。 如果上述方法仍然无法解决问题,你可以尝试使用其他工具连接数据库,或者联系数据库的技术支持团队寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值