DB regenerate (after update)

User 677b9c22ff

13-05-2008 03:34:41

Hi,


I got an error message that I should regenerate a DB,


however the helpfile and the error messega do not show how


to do that. After some fiddling around I found out to close the database


connection which forces a re-detection of the update.


There should be some comment in the helpfile or some menu point.





After the regeneration I got a second error message: After the dash


Tobias





chemaxon.jchem.db.DatabaseSearchException: The structure table contains obsolete data. Please regenerate the table.


at chemaxon.jchem.db.JChemSearch.initTable(JChemSearch.java:2916)


at chemaxon.jchem.db.JChemSearch.init(JChemSearch.java:3580)


at chemaxon.jchem.db.JChemSearch.search1(JChemSearch.java:2436)


at chemaxon.jchem.db.JChemSearch.search(JChemSearch.java:2333)


at chemaxon.jchem.db.JChemSearch.setRunning(JChemSearch.java:2160)


at chemaxon.jchem.db.JChemSearch.run_NE(JChemSearch.java:2196)


at com.im.df.chem.JChemStructureSearcher.execute(JChemStructureSearcher.java:229)


at com.im.df.impl.db.query.DFQueryExecutor$JChemBaseQueryStage.execute(DFQueryExecutor.java:582)


at com.im.df.impl.db.DBSchemaManager$5$1.run(DBSchemaManager.java:911)


Caused: java.lang.RuntimeException: Query failed


at com.im.df.impl.db.DBSchemaManager.queryForIds(DBSchemaManager.java:936)


at com.im.df.impl.db.DBEntityDataProviderImpl.queryForIds(DBEntityDataProviderImpl.java:140)


at com.im.df.impl.db.ResultSetImpl.applyQueryInternal(ResultSetImpl.java:184)


at com.im.df.impl.db.ResultSetImpl.applyWorkingQuery(ResultSetImpl.java:143)


at com.im.ijc.core.query.exec.ExecutableQueryPanel$2.phase1InRequestProcessor(ExecutableQueryPanel.java:237)


at com.im.df.util.BackgroundRunner.processTheTask(BackgroundRunner.java:112)


at com.im.df.util.BackgroundRunner$1.run(BackgroundRunner.java:79)


at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)


[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)





------------------------








org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [SELECT count(*) FROM APP.NEW_JCHEMBASE_TABLE]; SQL state [XJ001]; error code [0]; Java exception: ': java.lang.NullPointerException'.; nested exception is java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.


Caused by: java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.


at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)


at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)


at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)


at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)


at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)


at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)


at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)


at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)


at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)


at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)


at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)


at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:390)


at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:343)


at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:405)


at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:413)


at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:421)


at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:426)


at org.springframework.jdbc.core.JdbcTemplate.queryForInt(JdbcTemplate.java:435)


at com.im.df.impl.db.DBSchemaManager$JChemTableUpdater.regenerateTables(DBSchemaManager.java:1680)


at com.im.df.impl.db.DBSchemaManager$JChemTableUpdater.performNextAction(DBSchemaManager.java:1660)


at com.im.df.impl.db.sprovider.UpgradeJChemIterator$UpgradeAction.performNextAction(UpgradeJChemIterator.java:128)


at com.im.df.impl.db.sprovider.UpgradeJChemTablesState.proceedToNextState(UpgradeJChemTablesState.java:67)


at com.im.df.impl.db.sprovider.SchemaProviderImpl.proceedToNextState(SchemaProviderImpl.java:100)


at com.im.ijc.core.api.util.SchemaInitManager.startInit(SchemaInitManager.java:203)


at com.im.ijc.core.api.util.SchemaInitManager.access$000(SchemaInitManager.java:50)


at com.im.ijc.core.api.util.SchemaInitManager$1.run(SchemaInitManager.java:72)


at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)


at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)


Caused by: java.lang.NullPointerException


at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown Source)


at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown Source)


at org.apache.derby.impl.store.raw.xact.Xact.openContainer(Unknown Source)


at org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(Unknown Source)


at org.apache.derby.impl.store.access.heap.Heap.open(Unknown Source)


at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown Source)


at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown Source)


at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(Unknown Source)


at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(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.bindStatement(Unknown Source)


at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)


at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)


at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)


... 21 more

ChemAxon fa971619eb

13-05-2008 07:24:41

When an updated version of IJC contains an updated version of JChem the JChem tables in the database will often need to be regenerated.


This will be detected when you first connect to the database, and you will be asked whether to proceed with the regeneration. If you do not regenerate you will not be able to do some things, such as run structure searches (e.g the error you reported), so in general you should always regenerate or continue using the older version of IJC if you do not with to update the tables.





If for some reason the regeneration fails just restart IJC and the regeneration process will start again.





Tim

User 677b9c22ff

13-05-2008 17:04:12

Hello Tim,


thank you.


Tobias