Description
I am using a read-only db in a zip file with Derby in embedded mode. I ran an importer against it which basically just harvests info from DatabaseMetaData and got an error on several methods like this one. The method in question here is DatabaseMetaData.getTableTypes(). The same thing seems to happen on other methods I've tried as well (getCatalogs, getProcedures, etc).
Program:
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection conn = DriverManager.getConnection("jdbc:derby:jar:(d:\\derby\\bqt\\zipped
bqt-mini.zip)bqt");
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rs = dbmd.getTableTypes();
ERROR 40XD1: Container was opened in read-only mode.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.store.raw.data.BaseContainer.use(Unknown Source)
at org.apache.derby.impl.store.raw.data.BaseContainerHandle.useContainer(Unknown Source)
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.execute.RowChangerImpl.openForUpdate(Unknown Source)
at org.apache.derby.impl.sql.execute.RowChangerImpl.open(Unknown Source)
at org.apache.derby.impl.sql.catalog.TabInfoImpl.deleteRows(Unknown Source)
at org.apache.derby.impl.sql.catalog.TabInfoImpl.deleteRow(Unknown Source)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.dropDependentsStoredDependencies(Unknown Source)
at org.apache.derby.impl.sql.depend.BasicDependencyManager.clearDependencies(Unknown Source)
at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.compileStatement(Unknown Source)
at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.prepareAndRelease(Unknown Source)
at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.prepareAndRelease(Unknown Source)
at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(Unknown Source)
at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(Unknown Source)
at org.apache.derby.impl.sql.compile.ExecSPSNode.generate(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)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown Source)
at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareMetaDataStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.prepareSPS(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQuery(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getSimpleQuery(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getTableTypes(Unknown Source)
Attachments
Attachments
Issue Links
- depends upon
-
DERBY-541 Read-only databases fail to boot after soft upgrade. Raises error message: 40XD1: Container was opened in read-only mode.
- Closed