达梦数据库表找不到 relation “xxxxxx“ does not exist on node1

达梦数据库表找不到 relation "xxxxxx" does not exist on node1

问题现象

使用达梦数据库时,出现程序报错。
报错日志大概如下:
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error of sql :
SELECT COUNT(1) FROM xxxxxxx masb
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39) ~[mybatis-plus-core-3.3.2.jar:3.3.2]
    at com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor.queryTotal(PaginationInterceptor.java:253) ~[mybatis-plus-extension-3.3.2.jar:3.3.2]
    at com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor.intercept(PaginationInterceptor.java:201) ~[mybatis-plus-extension-3.3.2.jar:3.3.2]
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.5.4.jar:3.5.4]
    at com.sun.proxy.$Proxy1763.prepare(Unknown Source) ~[?:?]
    at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.prepareStatement(MybatisSimpleExecutor.java:92) ~[mybatis-plus-core-3.3.2.jar:3.3.2]
    at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:66) ~[mybatis-plus-core-3.3.2.jar:3.3.2]
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) ~[mybatis-3.5.4.jar:3.5.4]
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis-3.5.4.jar:3.5.4]
    at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:163) ~[mybatis-plus-core-3.3.2.jar:3.3.2]
    at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:90) ~[mybatis-plus-core-3.3.2.jar:3.3.2]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.4.jar:3.5.4]
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) ~[mybatis-3.5.4.jar:3.5.4]
    at sun.reflect.GeneratedMethodAccessor441.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_261]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_261]
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) ~[mybatis-spring-2.0.4.jar:2.0.4]
    ... 126 more
Caused by: org.postgresql.util.PSQLException: ERROR: relation "xxxxxx" does not exist on node1 |  |

问题原因/分析

relation "xxxxxx" does not exist on node1
报错的意思大概是xxxxx 对象(关系)在数据库节点中不存在,当前操作的是xxxxx表,也就是说xxxxx表在数据库中不存在。
但是我们通过连接数据库(DM管理工具)执行sql发现sql是可以执行的,也就是说表是存在的,但是为什么出现问题呢?
有一种很呆的可能性,就是程序连错了库了,表在A库中,但是程序连接的是B库,这种失误的可能性很低,太低级的错误大家一版情况下不会犯。
还有一种可能性,就是当前用户没有对应库表的权限。有很多种可能性会导致出现这样的场景,比如创建数据库对象的时候授权导致的,比如数据库对象的修改(比如修改表的所有者等等操作)等均可能会出现。
博主遇到的情况,是有人对数据库进行了操作,切换了数据库用户,也就是原来是A用户,现在是B用户了,但是在将A用户的表给B用户的操作过程种出现了问题,所以出现了直接连数据库可以查询到库表,通过程序去连接时提示找不到的问题(暂未分析到根本原因,但是直接原因就是这样)。

解决方案

撤销了上面的A用户库表给B用户库表操作之后,使用原来的A用户,问题迎刃而解。

其他

其他数据库,oracle,mysql等也有类似的问题,数据库对象的权限/拥有问题。所以数据库的这类非常规操作,得小心谨慎,在有足够把握时才进行操作。错误的操作可能导致原来的库表使用异常,甚至导致数据库出现问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值