表/视图'EJB__TIMER__TBL'不存在 [英] Table/View 'EJB__TIMER__TBL' does not exist

查看:305
本文介绍了表/视图'EJB__TIMER__TBL'不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在Glassfish 3.0.1上运行的应用程序。我已经在几个实例上已经成功安装了它,但现在我正在设置一个新的服务器。看日志,首先部署好了,但是我得到这个:

  [#| 2010-12-06T17 :53:38.020 + 0000 |警告| glassfish3.0.1 | org.eclipse.persistence.session.file中:/ opt /阳光/ GlassFish中/ GlassFish中/域/域1 /应用/ EJB定时器服务,应用程序/ WEB-INF /类/ ___ EJB__Timer__App | _ThreadID = 31; _ThreadName =线程1; | 
本地异常堆栈:
异常[EclipseLink-4002](Eclipse Persistence Services - 2.0.1.v20100213-r6600):org.eclipse.persistence.exceptions.DatabaseException
内部异常:java。 sql.SQLSyntaxErrorException:表/视图'EJB__TIMER__TBL'不存在。
错误代码:30000
调用:SELECT TIMERID,BLOB,INITIALEXPIRATIONRAW,SCHEDULE,INTERVALDURATION,OWNERID,STATE,LASTEXPIRATIONRAW,PKHASHCODE,CREATIONTIMERAW,CONTAINERID FROM EJB__TIMER__TBL WHERE(((CONTAINERID =?)AND(OWNERID = ?))AND(STATE =?))
bind => [84650008375328779,server,0]
查询:ReadAllQuery(name =findTimersByContainerAndOwnerAndStatereferenceClass = TimerState sql =SELECT TIMERID,BLOB,INITIALEXPIRATIONRAW,SCHEDULE,INTERVALDURATION,OWNERID,STATE,LASTEXPIRATIONRAW,PKHASHCODE,CREATIONTIMERAW,CONTAINERID FROM EJB__TIMER__TBL WHERE((CONTAINERID =?)AND(OWNERID =?))AND(STATE =?)))
在org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
在org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:687)
在org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:530)
在org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:529)
在org.eclipse.persistence.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:133)
在org.eclipse.persistence.internal.queries.DatasourceCallQue ryMechanism.executeCall(DatasourceCallQueryMechanism.java:205)
在org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:191)
在org.eclipse.persistence.internal.queries。 DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:
[snip]

code> __ TimerPool 连接池具有默认值(因此它使用嵌入式Derby驱动程序)。据我所知,设置与我的其他服务器相同 - 为什么会这样呢?






编辑



我能够通过从Glassfish的工作实例复制计时器DB(位于 $ GLASSFISH_HOME / glassfish /域/域1 / LIB /数据库/ ejbtimer )。我还想知道是什么导致了这个问题。



奇怪的是,我的应用程序正在使用计时器,但没有一个是持久的(或至少不应该是)。所以没有什么理由Glassfish甚至看这个数据库,对吧?

解决方案

当我覆盖了GF仍在运行时说,作为升级的一部分,文件不好。我找到的解决方案与你相同:关闭一个工作的GF,然后复制< gfhome> / domains / domain1 / lib / database 下的文件。 >

I have an application that runs on Glassfish 3.0.1. I've already successfully installed it on a few instances, but now I'm trying to set up a new server. Looking at the log, the deployment goes fine at first, but then I get this:

 [#|2010-12-06T17:53:38.020+0000|WARNING|glassfish3.0.1|org.eclipse.persistence.session.file:/opt/sun/glassfish/glassfish/domains/domain1/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App|_ThreadID=31;_ThreadName=Thread-1;|
Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Table/View 'EJB__TIMER__TBL' does not exist.
Error Code: 30000
Call: SELECT TIMERID, BLOB, INITIALEXPIRATIONRAW, SCHEDULE, INTERVALDURATION, OWNERID, STATE, LASTEXPIRATIONRAW, PKHASHCODE, CREATIONTIMERAW, CONTAINERID FROM EJB__TIMER__TBL WHERE (((CONTAINERID = ?) AND (OWNERID = ?)) AND (STATE = ?))
bind => [84650008375328779, server, 0]
Query: ReadAllQuery(name="findTimersByContainerAndOwnerAndState" referenceClass=TimerState sql="SELECT TIMERID, BLOB, INITIALEXPIRATIONRAW, SCHEDULE, INTERVALDURATION, OWNERID, STATE, LASTEXPIRATIONRAW, PKHASHCODE, CREATIONTIMERAW, CONTAINERID FROM EJB__TIMER__TBL WHERE (((CONTAINERID = ?) AND (OWNERID = ?)) AND (STATE = ?))")
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:687)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:530)
    at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:529)
    at org.eclipse.persistence.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:133)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:205)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:191)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:
 [snip]

All the properties for the __TimerPool connection pool have the default values (so it uses the embedded Derby driver). As far as I can tell, the settings are the same as my other servers - so why is it failing on this one?


EDIT

I was able to make it work by copying the timer DB from a working instance of Glassfish (located at $GLASSFISH_HOME/glassfish/domains/domain1/lib/databases/ejbtimer). I'd still like to know what caused this problem.

The weird thing is, my application is using timers, but none of them are persistent (or at least, they shouldn't be). So there's no reason why Glassfish is even looking at this DB, right?

解决方案

It's happened to me when I've overwritten those files while GF is still running, say, as part of an upgrade gone bad. The solution I found was the same as you: shut down a working GF, and copy over files under <gfhome>/domains/domain1/lib/database.

这篇关于表/视图'EJB__TIMER__TBL'不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆