日期:2014-05-16  浏览次数:20441 次

使用derby数据库首次连接时的ERROR 42Y07问题

近日,使用某产品安装部署,在首次运行时,后台抛出以下异常:

Caused by: java.sql.SQLException: Schema 'ROOT' does not exist
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
    ... 72 more
Caused by: ERROR 42Y07: Schema 'ROOT' does not exist
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(Unknown Source)
    at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Unknown Source)
    at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Unknown Source)
    at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(Unknown Source)
    at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
    at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
    at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
    at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
    at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
    at org.apache.derby.impl.sql.compile.CursorNode.bindState

单从异常来看是由于名为“ROOT”的Schema不存在造成的异常,由于数据库使用的是derby数据库而且手头上木有相应的客户端工具,因此,无法验证此问题。还是求助Google。

关键字:Caused by: ERROR 42Y07: Schema 'ROOT' does not exist,结果中有一位xd介绍“Continuum入门”的博文(作者:jiangshachina,地址:http://www.blogjava.net/jiangshachina/archive/2006/09/09/68680.aspx),此文中提到作者也遇到此问题,而且给出明确解释:

2.3 启动Continuum
    假设此时已经安装了Continuum,但还没有运行它。要运行Continuum,可以双击Continuum_Home\bin\win32\run.bat文件。对于第一次运行,会报一些错误:

……
WARN  RDBMS - Error initialising derby schema : Schema 'SA' does not exist
ERROR 42Y07: Schema 'SA' does not exist
……
这种情况是正常的,因为Continuum后台使用的是Apache Derby数据库,在第一次运行之前,Continuum所需要的一些表和数据并不存在。但Continuum会初始化这些数据,当第2次启动Continuum时,这些错误就不会出现了。

按照这个思路,我再次启动产品,发现后台这些异常信息,不断抛出,看来服务是正在运行,等后台不再抛异常以后,重启。

后台正常了!!!