Cannot connect to an existing embedded database

384 views
Skip to first unread message

Ospeleo

unread,
May 20, 2014, 11:47:15 AM5/20/14
to h2-da...@googlegroups.com
Hi,
What is wrong in my process ? 
I need an outside view.
I've been investigating this error for 12 hours over 3 days, thought it was linked with my software which uses the H2 database (Openconcerto) but it seems it is more H2/environment-related

I use OSX10.6.8
java version "1.6.0_65"
h2-1.3.176.jar

I have a database (10mB) in 
olivier:~ moi$ cd Library/Application\ Support/OpenConcerto/DBData/
olivier:DBData moi$ ls -la
total 19552
drwxr-xr-x   4 moi  moi       136 19 mai 21:18 .
drwxr-xr-x  24 moi  moi       816 19 mai 17:56 ..
-rw-r--r--   1 moi  moi  10004480 19 mai 21:18 OpenConcerto.h2.db
-rw-r--r--   1 moi  moi      3945 19 mai 17:18 OpenConcerto.trace.db


I launch the H2 console in embedded mode with the parameters:
jdbc:h2:file:/Users/moi/Library/Application\ Support/OpenConcerto/DBData/OpenConcerto;IFEXISTS=TRUE
login and password

The console seems to succesfully connect to the database (or else it should display an error message, with the option IFEXISTS=TRUE), but: 
Where are the tables ? Shouldn't there be the tables listed on the left pane?
What do I need to do to access these tables?
Thanks


too

unread,
May 21, 2014, 3:48:00 AM5/21/14
to h2-da...@googlegroups.com
hi,
Just few tips
  • what error is in OpenConcerto.trace.db?
  • try to create some table using the console. does that work? error?
  • what happens if you move the DB to location without spaces?
  • have you experimented with permissions to the DB file?
Tono

christof...@finaris.de

unread,
May 21, 2014, 4:42:36 AM5/21/14
to h2-da...@googlegroups.com
Hi,

one of our customers is facing the following problem while using our product, which uses an embedded H2 database (v. 1.3.173).

The query looks like this:

SELECT INITIAL_FIXED_VOL, FIXED_YIELD_4AVG, FIXED_ORIGMAT_4AVG,
INITIAL_FLOAT_VOL, FLOAT_YIELD_4AVG, FLOAT_ORIGMAT_4AVG
FROM REPORT_0.KONTOKORRENT_FINAL_1
UNION
SELECT INITIAL_FIXED_VOL, FIXED_YIELD_4AVG, FIXED_ORIGMAT_4AVG,
INITIAL_FLOAT_VOL, FLOAT_YIELD_4AVG, FLOAT_ORIGMAT_4AVG
FROM REPORT_0.TERMINGELD_FINAL_1
UNION
SELECT INITIAL_FIXED_VOL, FIXED_YIELD_4AVG, FIXED_ORIGMAT_4AVG,
INITIAL_FLOAT_VOL, FLOAT_YIELD_4AVG, FLOAT_ORIGMAT_4AVG
FROM REPORT_0.REPOLEIHE_FINAL_1


The 3 objects in the from clauses are views that refer to a table function.


The following exception is thrown by H2 (full stack trace at the end of this email, it is quite complicated since the mentioned table functions execute code within the H2 database):

Caused by: java.lang.ArrayIndexOutOfBoundsException: 2048
 at org.h2.store.Data.writeVarLong(Data.java:1243)
 at org.h2.store.Data.writeValue(Data.java:577)
 at org.h2.store.Data.writeValue(Data.java:641)
 at org.h2.index.PageBtreeIndex.writeRow(PageBtreeIndex.java:387)
 at org.h2.index.PageBtreeLeaf.writeData(PageBtreeLeaf.java:292)
 at org.h2.index.PageBtreeLeaf.write(PageBtreeLeaf.java:266)
 at org.h2.store.PageStore.writeBack(PageStore.java:1015)
 at org.h2.util.CacheLRU.removeOld(CacheLRU.java:209)
 at org.h2.util.CacheLRU.removeOldIfRequired(CacheLRU.java:138)
 at org.h2.util.CacheLRU.put(CacheLRU.java:113)
 at org.h2.store.PageStore.getPage(PageStore.java:832)
 at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:231)
 at org.h2.index.PageDataNode.getNextPage(PageDataNode.java:231)
 at org.h2.index.PageDataLeaf.getNextPage(PageDataLeaf.java:396)
 at org.h2.index.PageDataCursor.nextRow(PageDataCursor.java:93)
 at org.h2.index.PageDataCursor.next(PageDataCursor.java:52)
 at org.h2.index.IndexCursor.next(IndexCursor.java:271)
 at org.h2.table.TableFilter.next(TableFilter.java:359)
 at org.h2.command.dml.Select.queryFlat(Select.java:518)
 at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
 at org.h2.command.dml.Query.query(Query.java:314)
 at org.h2.command.dml.Query.query(Query.java:284)
 at org.h2.command.dml.Query.query(Query.java:36)
 at org.h2.command.CommandContainer.query(CommandContainer.java:91)
 at org.h2.command.Command.executeQuery(Command.java:195)
 ... 156 more


However, this problem does not occur, when UNION ALL is used instead of UNION.
A workaround for my customer, but maybe you can extract useful information.
Unfortunately, I cannot provide a simple reproduction code for this.



com.rapidrep.exception.SQLScriptletException: Allgemeiner Fehler:
"java.lang.ArrayIndexOutOfBoundsException: 2048"
General error: "java.lang.ArrayIndexOutOfBoundsException: 2048"; SQL
statement:


SELECT B.*, 'Y' AS SECURED,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))

THEN  'OTHER'
ELSE NULL
END ) AS
KUNDENGRUPPE


,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))
THEN  DATE '2013-12-31'
ELSE NULL
END ) AS
TRADE_DATE


,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))
THEN  DATE '2014-01-31'
ELSE NULL
END ) AS
MATURITY_DATE


,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (RIGHT( FINANZBESTANDSWAEHRUNG, 3) IN
('EUR', 'DEM', 'FFR', 'ITL')))

THEN  'EUR'
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))

THEN   RIGHT( FINANZBESTANDSWAEHRUNG, 3)
ELSE NULL
END ) AS
CURRENCY


,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (KONS_OHNE_R_V = 'nein'))

THEN  'J'
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))

THEN  'N'
ELSE NULL
END ) AS
FG_EXTERN


,



( CASE
WHEN ((1=1) AND (1=1))

THEN  'FLOAT'
ELSE NULL
END ) AS
LEGTYPE


 FROM REPORT_0.KONTOKORRENT_1 B

 [50000-173]
  at com.rapidrep.kernel.internaldb.common.tablefunctions.dataelement.DataElementTableFunctionManager.readTableFunction(DataElementTableFunctionManager.java:217)
  at com.rapidrep.kernel.internaldb.h2.tablefunctions.H2DataElementTableFunctionManager.readTableFunction(H2DataElementTableFunctionManager.java:98)
  at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.h2.engine.FunctionAlias$JavaMethod.getValue(FunctionAlias.java:411)
  at org.h2.expression.JavaFunction.getValue(JavaFunction.java:39)
  at org.h2.table.FunctionTable.getValueResultSet(FunctionTable.java:209)
  at org.h2.table.FunctionTable.getResult(FunctionTable.java:180)
  at org.h2.index.FunctionIndex.find(FunctionIndex.java:50)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.index.ViewIndex.find(ViewIndex.java:253)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.Query.query(Query.java:36)
  at org.h2.command.CommandContainer.query(CommandContainer.java:91)
  at org.h2.command.Command.executeQuery(Command.java:195)
  at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78)
  at com.rapidrep.kernel.internaldb.common.tablefunctions.dataelement.DataElementTableFunctionManager.readTableFunction(DataElementTableFunctionManager.java:182)
  at com.rapidrep.kernel.internaldb.h2.tablefunctions.H2DataElementTableFunctionManager.readTableFunction(H2DataElementTableFunctionManager.java:98)
  at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.h2.engine.FunctionAlias$JavaMethod.getValue(FunctionAlias.java:411)
  at org.h2.expression.JavaFunction.getValue(JavaFunction.java:39)
  at org.h2.table.FunctionTable.getValueResultSet(FunctionTable.java:209)
  at org.h2.table.FunctionTable.getResult(FunctionTable.java:180)
  at org.h2.index.FunctionIndex.find(FunctionIndex.java:50)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.index.ViewIndex.find(ViewIndex.java:253)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.Query.query(Query.java:36)
  at org.h2.command.CommandContainer.query(CommandContainer.java:91)
  at org.h2.command.Command.executeQuery(Command.java:195)
  at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78)
  at com.rapidrep.kernel.internaldb.common.tablefunctions.dataelement.DataElementTableFunctionManager.readTableFunction(DataElementTableFunctionManager.java:182)
  at com.rapidrep.kernel.internaldb.h2.tablefunctions.H2DataElementTableFunctionManager.readTableFunction(H2DataElementTableFunctionManager.java:98)
  at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.h2.engine.FunctionAlias$JavaMethod.getValue(FunctionAlias.java:411)
  at org.h2.expression.JavaFunction.getValue(JavaFunction.java:39)
  at org.h2.table.FunctionTable.getValueResultSet(FunctionTable.java:209)
  at org.h2.table.FunctionTable.getResult(FunctionTable.java:180)
  at org.h2.index.FunctionIndex.find(FunctionIndex.java:50)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.index.ViewIndex.find(ViewIndex.java:253)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.Query.query(Query.java:36)
  at org.h2.command.CommandContainer.query(CommandContainer.java:91)
  at org.h2.command.Command.executeQuery(Command.java:195)
  at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78)
  at com.rapidrep.kernel.internaldb.common.tablefunctions.dataelement.DataElementTableFunctionManager.readTableFunction(DataElementTableFunctionManager.java:182)
  at com.rapidrep.kernel.internaldb.h2.tablefunctions.H2DataElementTableFunctionManager.readTableFunction(H2DataElementTableFunctionManager.java:98)
  at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.h2.engine.FunctionAlias$JavaMethod.getValue(FunctionAlias.java:411)
  at org.h2.expression.JavaFunction.getValue(JavaFunction.java:39)
  at org.h2.table.FunctionTable.getValueResultSet(FunctionTable.java:209)
  at org.h2.table.FunctionTable.getResult(FunctionTable.java:180)
  at org.h2.index.FunctionIndex.find(FunctionIndex.java:50)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.index.ViewIndex.find(ViewIndex.java:253)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.Query.query(Query.java:36)
  at org.h2.command.CommandContainer.query(CommandContainer.java:91)
  at org.h2.command.Command.executeQuery(Command.java:195)
  at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78)
  at com.rapidrep.kernel.internaldb.common.tablefunctions.dataelement.DataElementTableFunctionManager.readTableFunction(DataElementTableFunctionManager.java:182)
  at com.rapidrep.kernel.internaldb.h2.tablefunctions.H2DataElementTableFunctionManager.readTableFunction(H2DataElementTableFunctionManager.java:98)
  at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.h2.engine.FunctionAlias$JavaMethod.getValue(FunctionAlias.java:411)
  at org.h2.expression.JavaFunction.getValue(JavaFunction.java:39)
  at org.h2.table.FunctionTable.getValueResultSet(FunctionTable.java:209)
  at org.h2.table.FunctionTable.getResult(FunctionTable.java:180)
  at org.h2.index.FunctionIndex.find(FunctionIndex.java:50)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.index.ViewIndex.find(ViewIndex.java:253)
  at org.h2.index.BaseIndex.find(BaseIndex.java:126)
  at org.h2.index.IndexCursor.find(IndexCursor.java:155)
  at org.h2.table.TableFilter.next(TableFilter.java:328)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.SelectUnion.queryWithoutCache(SelectUnion.java:183)
  at org.h2.command.dml.SelectUnion.query(SelectUnion.java:408)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.SelectUnion.queryWithoutCache(SelectUnion.java:183)
  at org.h2.command.dml.SelectUnion.query(SelectUnion.java:408)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.Query.query(Query.java:36)
  at org.h2.command.CommandContainer.query(CommandContainer.java:91)
  at org.h2.command.Command.executeQuery(Command.java:195)
  at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:177)
  at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:156)
  [...]
 
Caused by: org.h2.jdbc.JdbcSQLException: Allgemeiner Fehler:
"java.lang.ArrayIndexOutOfBoundsException: 2048"
General error: "java.lang.ArrayIndexOutOfBoundsException: 2048"; SQL
statement:


SELECT B.*, 'Y' AS SECURED,
( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))

THEN  'OTHER'
ELSE NULL
END ) AS
KUNDENGRUPPE

,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))
THEN  DATE '2013-12-31'
ELSE NULL
END ) AS
TRADE_DATE


,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))
THEN  DATE '2014-01-31'
ELSE NULL
END ) AS
MATURITY_DATE


,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (RIGHT( FINANZBESTANDSWAEHRUNG, 3) IN
('EUR', 'DEM', 'FFR', 'ITL')))

THEN  'EUR'
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))

THEN   RIGHT( FINANZBESTANDSWAEHRUNG, 3)
ELSE NULL
END ) AS
CURRENCY


,



( CASE
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (KONS_OHNE_R_V = 'nein'))

THEN  'J'
WHEN ((LIEFERUNG LIKE  'BCA_%' ) AND (1=1))

THEN  'N'
ELSE NULL
END ) AS
FG_EXTERN


,



( CASE
WHEN ((1=1) AND (1=1))

THEN  'FLOAT'
ELSE NULL
END ) AS
LEGTYPE


 FROM REPORT_0.KONTOKORRENT_1 B

 [50000-173]
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:331)
  at org.h2.message.DbException.get(DbException.java:160)
  at org.h2.message.DbException.convert(DbException.java:283)
  at org.h2.command.Command.executeQuery(Command.java:199)
  at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78)
  at com.rapidrep.kernel.internaldb.common.tablefunctions.dataelement.DataElementTableFunctionManager.readTableFunction(DataElementTableFunctionManager.java:182)
  ... 154 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 2048
  at org.h2.store.Data.writeVarLong(Data.java:1243)
  at org.h2.store.Data.writeValue(Data.java:577)
  at org.h2.store.Data.writeValue(Data.java:641)
  at org.h2.index.PageBtreeIndex.writeRow(PageBtreeIndex.java:387)
  at org.h2.index.PageBtreeLeaf.writeData(PageBtreeLeaf.java:292)
  at org.h2.index.PageBtreeLeaf.write(PageBtreeLeaf.java:266)
  at org.h2.store.PageStore.writeBack(PageStore.java:1015)
  at org.h2.util.CacheLRU.removeOld(CacheLRU.java:209)
  at org.h2.util.CacheLRU.removeOldIfRequired(CacheLRU.java:138)
  at org.h2.util.CacheLRU.put(CacheLRU.java:113)
  at org.h2.store.PageStore.getPage(PageStore.java:832)
  at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:231)
  at org.h2.index.PageDataNode.getNextPage(PageDataNode.java:231)
  at org.h2.index.PageDataLeaf.getNextPage(PageDataLeaf.java:396)
  at org.h2.index.PageDataCursor.nextRow(PageDataCursor.java:93)
  at org.h2.index.PageDataCursor.next(PageDataCursor.java:52)
  at org.h2.index.IndexCursor.next(IndexCursor.java:271)
  at org.h2.table.TableFilter.next(TableFilter.java:359)
  at org.h2.command.dml.Select.queryFlat(Select.java:518)
  at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
  at org.h2.command.dml.Query.query(Query.java:314)
  at org.h2.command.dml.Query.query(Query.java:284)
  at org.h2.command.dml.Query.query(Query.java:36)
  at org.h2.command.CommandContainer.query(CommandContainer.java:91)
  at org.h2.command.Command.executeQuery(Command.java:195)
  ... 156 more

Kind regards,

Christoff Schmitz

F I N A R I S
Financial Software Partner GmbH
Sömmerringstrasse 23
60322 Frankfurt am Main

Fon:      +49 (0)69  / 254 98 - 24
Mobile: +49 (0)176 / 206 34 186
Fax:       +49 (0)69  / 254 98 - 50
eMail:    
mailto:Christof...@finaris.de
www:      
http://www.finaris.de und http://www.rapidrep.com

================================================================================================================
Disclaimer
The information contained in this e - mail and any attachments ( together the "message") is intended for the addressee only and
may contain confidential and/or privileged information. If you have received the message by mistake please delete it and notify
the sender and do not copy or distribute it or disclose its contents to anyone.

FINARIS Financial Software Partner GmbH, Sömmerringstr. 23, 60322 Frankfurt/Main, Germany
Registered at Frankfurt/Main, HRB 52873, Managing Directors: Dipl. Inf. Hermann Friebel, Dipl. Ing. Kai Bächle, Dipl. Inf. Werner Märkl
================================================================================================================

Ospeleo

unread,
May 21, 2014, 4:55:55 AM5/21/14
to h2-da...@googlegroups.com
Hi,

The main problem is found. the '\ ' character in the path is not recognized.
I created a db in ~ and connected to it, create a table, disconnect.
I move the db in ~/Library and connect to it: the table is displayed.
I move the db in ~/Library/Application\ Support and connect to it: the table doesn't show.

Then, I move OpenConcerto.h2.db in ~/Library and connect to it.
Get the following error message

I'm investigating it and let you know
Thanks for the hints

Ospeleo

unread,
May 21, 2014, 4:58:23 AM5/21/14
to h2-da...@googlegroups.com
The full error message is 


ALTER TABLE "Default".FWK_MODULE_DEP ADD CONSTRAINT "Default"."FWK_MODULE_DEP_ID_MODULE_fkey" FOREIGN KEY(ID_MODULE) REFERENCES "Default".FWK_MODULE_METADATA(ID) ON DELETE CASCADE ON UPDATE CASCADE NOCHECK [23505-176]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:344)
    at org.h2.message.DbException.get(DbException.java:178)
    at org.h2.message.DbException.get(DbException.java:154)
    at org.h2.index.PageDataIndex.getNewDuplicateKeyException(PageDataIndex.java:166)
    at org.h2.index.PageDataIndex.add(PageDataIndex.java:144)
    at org.h2.store.PageStore.addMeta(PageStore.java:1808)
    at org.h2.index.PageBtreeIndex.<init>(PageBtreeIndex.java:64)
    at org.h2.table.RegularTable.addIndex(RegularTable.java:235)
    at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:280)
    at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:205)
    at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:73)
    at org.h2.engine.MetaRecord.execute(MetaRecord.java:59)
    at org.h2.engine.Database.open(Database.java:719)
    at org.h2.engine.Database.openDatabase(Database.java:260)
    at org.h2.engine.Database.<init>(Database.java:254)
    at org.h2.engine.Engine.openSession(Engine.java:57)
    at org.h2.engine.Engine.openSession(Engine.java:164)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:142)
    at org.h2.engine.Engine.createSession(Engine.java:125)
    at org.h2.engine.Engine.createSession(Engine.java:27)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:331)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:107)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:91)
    at org.h2.Driver.connect(Driver.java:74)
    at org.h2.server.web.WebServer.getConnection(WebServer.java:684)
    at org.h2.server.web.WebApp.login(WebApp.java:958)
    at org.h2.server.web.WebApp.process(WebApp.java:212)
    at org.h2.server.web.WebApp.processRequest(WebApp.java:171)
    at org.h2.server.web.WebThread.process(WebThread.java:138)
    at org.h2.server.web.WebThread.run(WebThread.java:94)
    at java.lang.Thread.run(Thread.java:695)

Noel Grandin

unread,
May 21, 2014, 5:25:52 AM5/21/14
to h2-da...@googlegroups.com
I have no idea what the underlying problem is.
But if you could create a standalone test case for it I could probably track it down.

In the meantime you could probably work around it by bumping up your cache size.
Append something like this to your URL
;CACHE_SIZE=1024
where the size is in kilobytes.
Message has been deleted

too

unread,
May 21, 2014, 7:44:01 AM5/21/14
to h2-da...@googlegroups.com
I have not realized this right away but backward slash is not URI replacement for space. it is %20 . The slash is usually used in file paths but not in the URI. JDBC connection string is URI hence you need to make sure it is valid. Try the %20 perhaps that will work for you. Maybe malformed URI caused driver to ignore IFEXISTS and your blank DB got created somewhere. try searching the drive or subpaths of your path or by filename

Tono

Ospeleo

unread,
May 21, 2014, 8:52:03 AM5/21/14
to h2-da...@googlegroups.com
I have the same "blank" database If I use %20 or '\ '

But when I move the database (temporarily) to another location, without a space in the path, I get the error message cited below

Ospeleo

unread,
May 22, 2014, 11:21:19 AM5/22/14
to h2-da...@googlegroups.com
The problem has been solved by downgrading to h2-1.3.172.jar

1.3.176 or 1.3.178 wouldn't open my database "Unique index or primary key violation"
1.3.172 opens it just fine.

Thomas Mueller

unread,
May 22, 2014, 11:29:19 AM5/22/14
to h2-da...@googlegroups.com
Hi

Don't escape spaces. 

Regards, Thomas 
--
You received this message because you are subscribed to the Google Groups "H2 Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Ospeleo

unread,
May 24, 2014, 11:38:03 AM5/24/14
to h2-da...@googlegroups.com
If the h2 team is interested by this case (a Database that produces a "Unique index or primary key violation" error with 1.3.176 but opens perfectly with 1.3.172, let me know. I cannot investigate the bug myself, but my problem is fixed.

Thomas Mueller

unread,
May 30, 2014, 8:23:04 AM5/30/14
to H2 Google Group
Hi,

Thanks, but I already have a test case for the "Unique index or primary key violation" problem.

Regards,
Thomas



Reply all
Reply to author
Forward
0 new messages