热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Causedby:org.postgresql.util.PSQLException:ERROR:columnxxx.xxxdoesnotexist

最近在做压力测试,需要将生产上的两个数据库数据导到测试环境上来,因为涉及到数据库的操作都是交给DBA来做的,所以就没有管,然

最近在做压力测试,需要将生产上的两个数据库数据导到测试环境上来,因为涉及到数据库的操作都是交给DBA来做的,所以就没有管,然后当DBA跟我说一切OK之后,为了保险起见我还是决定在本地试一下,项目是正常起来了,当我打一个get请求之后。。。,出现了尴尬的一幕,报错啦:relation "xxx" does not exist

说我的表不存在,纳尼?数据库连接、entity一切都没有变的呀,联想起以前也出现过类似的情况,是数据库的search_path没有修改,于是向亲爱的DBA同事反映了,效率很快的改好了,再试了下,发现这个数据库确实是好了,再试试另一个数据库,发现又报错了,但是这次的和之前的报错不一样了,上次是表找不到,这次是列找不到,报错信息如下:

exception occurs: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet;

Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Caused by: org.postgresql.util.PSQLException: ERROR: column shiplocati0_.latitude does not exist

 

虽然很尴尬,但是不能慌,网上看看可有兄弟跟我遇到一样的问题,看了一圈,发现大家出现这样的问题大致是两种原因:

1.表与字段没有对应起来

2.数据库连接池配置方言与数据库不匹配

 

但是仔细检查了一遍,我的字段没有动,表数据也是DBA直接copy过来的,第一种情况应该不会发生,方言我也没有动,检查了下也是没问题的,这让我很难受。

思来想去没道理啊,难道是因为DBA只改了第一个库的search_path?但是,这么明明就找到了表的呀,只是字段没有,强迫自己静下来,倒杯水戴上耳机听听歌。。。继续去网上看看,看到一个哥们是这样解决的:

原文:https://stackoverflow.com/questions/58477715/org-postgresql-util-psqlexception-error-column-systementi0-id-does-not-exist

虽然我感觉不是schema的问题,因为我觉得我们的DBA肯定两个表的search_path都改了。但是我已经走投无路了,死马当活马医吧,在@Table注解上加上 schema 属性 ,

@Table(name = "table_name", schema = "schema_name")

试了下,发现居然解决问题了,我???

唉,人与人之间的信任呢?但是我在想,既然schema不对,它是怎么找到表的呢?

因为我们用的schema都是自定义的schema,而不是默认的public,所以我们正在使用的数据库都是修改了search_path为自定义的schema的,但是,后面这个库没有改search_path,它会使用默认的public的schema,它怎么会找得到表呢?于是去数据库看了一下,发现默认的public schema里面居然真的有这张表,但是比现在的表要少几个字段。。。应该是以前项目早期建的表,问了下老同事,发现确实是这样,太坑了啊。。。被自己蠢哭了,应该早早问问DBA有没有改第二个库的search_path的。。。

既然问题找到了,让DBA改下search_path就OK啦。所以说,我的问题其实还是上面说的第一种情况,但是不是那么的明显就能看出来的。


推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
author-avatar
陈杰倩平贵奕白
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有