3
回答
系统偶尔出现column XX does not exist异常,需重启应用才能恢复
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

系统现在遇到一个BUG无处下手:在运行一段时间后,会出现 column XX does not exist at character 这样的异常,而这个字段一般来说都是外键,重启应用就恢复了(在我迁移系统和数据库后才发生)

首先这个字段一定是存在的,系统大概在运行一周后开始偶尔出现这个问题,比如一个查询功能,连续刷新10几次,可能就会出现2到3次这个错误,用的时间越长,出现的频率也越高了,这个错误日志在postgres数据库日志中也能看到,但是我直接把SQL复制到客户端运行,不管怎么样都不会报错,于是我试着重启了数据库,问题依旧没有解决,这是否说明不是数据库的问题呢(从本机连数据库也不会报错)?

重启应用,问题立马解决,但是应用的问题,为什么会直接导致数据库执行查询时提示存在的字段找不到呢?

我系统用的是spring mvc + hibernate,最开始用的是oracle数据库,后来数据库和应用都迁移到我租的一台云主机上面去,因为没有oracle数据库,所以我选了一个类似的postgres,把数据迁移过去并修改相关应用

在我搬迁应用和数据库之前,系统运行了大概1年,从未出现过这个问题,搬迁后大概1周就出现一次,数据库在迁移过程中有出现过卡死不动的情况(客户端导入的),但是我最后检查数据并未缺失.

云主机比较差,只有4G内存,8核CPU,安装了postgres,mysql,svn,apache,tomcat,php,sftp,大概这些软件

但是出问题的时候,并没有看到程序占了很大的内存,cpu也正常

现在这个问题感觉根本无处下手,不知道从哪去看问题,有没有高手遇到过这种情况?或者麻烦大神门给个排查的方向,我现在只能晚上偷偷摸摸重启下应用了

举报
zhufengwnsh2
发帖于2年前 3回/299阅

以下是问题补充:

  • @zhufengwnsh2 :ERROR: column merchantlo0_.channels does not exist at character 441,这个就是数据库的错误日志 Caused by: org.postgresql.util.PSQLException: ERROR: column merchantlo0_.channels does not exist Position: 441,这个是应用的日志 其实错误信息就这一句话,程序我贴出来也没用,就是简单的一个HQL查询语句,大部分时候正常不会报错,偶尔出错,同样的SQL,所以我才觉得问题太诡异,channels 是这张表的一个外键 (2年前)
共有3个答案 最后回答: 2年前

你说来说去,关键点却没说清楚,虽然字数很多,但大体在描述一些无关紧要的东西,很难从这些看出来是什么问题!~

关键的东西是~~~~~

错误日志!!!

代码!!!

--- 共有 3 条评论 ---
zhufengwnsh2回复 @Sel8616 : 不是这个问题,我查询出来没有结果也会报错,而且,报错日志是直接出现在了数据库的日志里面,根本还没到封装数据这个层面 2年前 回复
Sel8616回复 @zhufengwnsh2 : 看样子不是查询过程中的错误,猜测是工具类封装查询结果时忽略了空值,当从结果中取channels属性时,目标不存在。 2年前 回复
zhufengwnsh2数据库和应用的错误日志差不多:org.postgresql.util.PSQLException: ERROR: column merchantlo0_.channels does not exist 程序就一个简单的HQL查询,一样的功能和条件,不是每次都错,偶尔会错一次 2年前 回复
顶部