Mybatis连接Postgres报ERROR: relation xxx表名 does not exist.解决方法

news/2024/7/9 22:49:33 标签: postgresql

在mybatis的mapper.xml中写入已经验证后的查询语句时报错如下:

org.postgresql.util.PSQLException: ERROR: relation "xxx_tablename" does not exist

首先,查询语句已经在数据库里查验过了,没有任何问题,数据库中也有这张表,为啥就是一直报这个错误呢?在网上搜了很久,大概的说法如下:
1.pg是需要区分大小写的,这个也对了,没有问题;
2.可能与原本数据库中自带的表冲突了,这个也排除了,表都是自己新建的,并且表名没有冲突;
3.表的键值和其他表存在依赖关系,这个也并没有。
各种说法的帖子都查了,但是并没有卵用。
后来才知道,py库查询时需要在表名前加模式名称,就是这张表属于哪个schema(模式),不然查询时可能找不到表。
到此问题解决,发现相同的错误不一定出于一个原因!

附录:
schema介绍
在数据库中,schema(中文叫模式)是数据库的组织和结构,schemas and schemata都可以作为复数形式。模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。

Schema和DataBase是否等同?
涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。

取决于数据库供应商
对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式

(1)MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。

(2)但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。

(3)而根据这篇SQL Server技术文章SQLServer technical article,schema是数据库SQL Server内部的一个独立的实体。 所以,他们也不是一回事。

因此,取决于您使用的RDBMS,模式和数据库可能不一样。


http://www.niftyadmin.cn/n/1184718.html

相关文章

shell脚本4种执行方式

Linux中shell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。这篇文章主要介绍了shell脚本4种执行方式 ,需要的朋友可以参考下 1、工作目录执行 工作目录执行,指的是执行脚本时&am…

shell中常用命令总结

由于常用的命令容易忘,还是记录下,以后不断更新完善。 一、如果你希望程序是在后台执行,可以在终端按 ctrlC 退出程序,可以退出执行的脚本日志,回到root输入处 二、启动jar包的方法: 1. ./restart.sh 2. s…

如何写Java单元测试

本文引自https://www.cnblogs.com/ysw-go/p/5447056.html 什么是单元测试   我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定…

Java注解@Mock和@InjectMocks及@Mock和@Spy之间的区别

Java注解Mock和InjectMocks及Mock和Spy之间的区别 1.Mock和InjectMocks的区别 Mock为您需要的类创建一个模拟实现。 InjectMocks创建类的一个实例,并将用Mock或Spy注释创建的模拟注入到这个实例中。 注意,必须使用RunWith(MockitoJUnitRunner.class)或M…

MySQL报错[ERR] 1093 - You can‘t specify target table ‘student_info‘ for update in FROM clause 的解决办

MySQL在执行更新或者删除操作时,当条件还是该表查询出来的时候,会报 [ERR] 1093 - You can’t specify target table ‘student_info’ for update in FROM clause 这可能更新的表与查询的表为同一表会存在嵌套递归,MySQL会报上述错误。 如&…

部署到新环境容器里tomcat版本和镜像里打进去的tomcat不一致

问题:最近在做镜像打包及部署改造工作,发现部署到新环境容器里tomcat版本和镜像里打进去的tomcat不一致,并且部署到其他环境不存在这样的问题,于是怀疑是环境配置有问题 排查过程:1、先登录环境 2、kubectl exec -it …

java之线程和并发

Java之线程 线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一…

什么是JAVA,特点是?

JAVA一种可以编写跨平台应用软件、完全面向对象的程序设计语言。 特点: 1.简单性 丢弃了C中很难理解的运算符重载、多重继承等模糊概念。 java不使用指针,而是使用引用,并提供了自动的垃圾回收机制,使程序员不必为内存管理而担…