首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgres plsql脚本循环卡住

问postgres plsql脚本循环卡住
EN

Stack Overflow用户
提问于 2013-08-25 00:56:39
回答 2查看 576关注 0票数 0

我有一个Java程序,它通过JPA (EclipseLink)访问Postgres数据库。

首先,我让JPA创建数据库。

然后,我运行一个java.sql.Connection (通过对实体管理器展开()获得),一个pgsql脚本操作创建的数据库。

实体管理器被配置为使用连接池(c3p0)。

脚本的一部分删除了表列表的约束。

由于某种原因,它在丢弃了许多表后就陷入了困境。

没有其他活动事务(pg_stat_activity),也没有任何未授予的锁(pg_locks)。

我在drop约束语句之前和之后添加了调试打印,它们都是打印出来的,因此它似乎被卡在循环的中间。当从pg_stat_activity中选择时,将返回相关事务的下列结果:

代码语言:javascript
复制
Waiting: false 
State:   Active
Query:   Empty

从检查CPU使用情况来看,postgres进程似乎是空闲的。当我从pgAdmin运行脚本时,它不会卡住,只有当它从Java程序运行时才会卡住。通常情况下,它在200次循环迭代后会被卡住,但在其他循环中也会被卡住。重设代码后,这个问题消失了两次(真Vodou)。

我对Postgres分析工具更感兴趣。任何解决这一僵局的想法或技术都将不胜感激。

  • 解决这个问题的一个解决方法是打开一个新的jdbc连接并在那里运行它,但是我仍然有兴趣了解如何在将来解决这些问题。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-09 00:27:52

这听起来像是一个JDBC或C3P0问题,而不是Postgresql问题,如果PGAdmin有效,但是您的JDBC方法不起作用。您是否记录了C3P0连接池程序的所有查询,以尝试查看是否存在任何数据库级别的问题?PGAdmin成功的事实使我相信,您应该重新检查您的JDBC和C3P0配置,以解决任何问题。

有关db锁定的更多详细信息,请参见以下页面:

票数 1
EN

Stack Overflow用户

发布于 2014-01-30 15:49:20

问题似乎在于plsql脚本正在使用引发通知来打印调试消息。

由于某些原因,当太多的这些打印时,脚本会被卡住。一旦他们被移除,它又开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18424650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档