Hi,

Thanks a lot for the test case! I could reproduce the problem now. The
SQL.sql can be reduced to:

create table a(x int primary key);
create table b(x int, y int, primary key(x, y));
alter table b add foreign key(x) references a(x);

I used the following shell script to reproduce the error:

rm testdb*
rm empty.sql
touch empty.sql
java -cp h2-1.3.174.jar org.h2.tools.RunScript -url jdbc:h2:./testdb
-script SQL.sql -user x
java -cp h2-1.3.176.jar org.h2.tools.RunScript -url jdbc:h2:./testdb
-script empty.sql -user x
java -cp h2-1.3.176.jar org.h2.tools.RunScript -url jdbc:h2:./testdb
-script empty.sql -user x

I'm not sure yet what the problem is, but it looks like it's related to
bugfixes for contraints (see the change log).

Regards,
Thomas





On Fri, May 16, 2014 at 11:57 AM, Niko Paltzer <nik...@gmail.com> wrote:

> I can confirm the problem. We tried to move from 1.3.172 to 1.3.174 and
> got the same error.
>
>
>
>
> On Friday, May 9, 2014 4:12:29 PM UTC+2, Germano Rizzo wrote:
>>
>> If I remove the foreign key definition (last line in the SQL) the problem
>> doesn't present itself.
>>
>> Of course I can't do this, as I have many databases already created. I'll
>> stick with 174 until this is solved.
>>
>> Il giorno venerdì 9 maggio 2014 15:30:07 UTC+2, Germano Rizzo ha scritto:
>>>
>>> Hi,
>>>    I have a reproducible bug with versions 174 and 176 (at least). A db
>>> created with 1.3.174 (no particular settings) corrupts when just opening
>>> and closing it in 1.3.176. To reproduce:
>>>
>>>
>>>    1. download this sql (generated by the SCRIPT command from a test db
>>>    of mine): https://www.dropbox.com/s/gjng7vfqkpp9fio/SQL.sql
>>>    2. create a blank db in 1.3.174 and restore the script; close the db
>>>    3. open the db in 1.3.176, close it;
>>>    4. reopen the db in 1.3.176. it will crash.
>>>
>>> As said, I don't use any parameter for the JDBC URL. The crash is this:
>>>
>>> Exception in thread "main" org.h2.jdbc.JdbcSQLException: Unique index or
>>> primary key violation: "PRIMARY KEY ON """".PAGE_INDEX"; SQL statement:
>>> ALTER TABLE PUBLIC.DETAILS ADD CONSTRAINT PUBLIC.FK_DETAILS FOREIGN
>>> KEY(ID) REFERENCES PUBLIC.ENTITIES(ID) 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)
>>>     ...
>>>
>>> Here you can find the corrupted db: https://www.dropbox.com/s/
>>> e4fj39jaoqwsdom/test.h2.db
>>>
>>> You can use SquirrelSQL to test, or use this eclipse project:
>>> https://www.dropbox.com/s/ez2lre6t7uf64vc/H2Bug.7z
>>>
>>> To use it:
>>>
>>>    1. Put only h2-1.3.174.jar in the path
>>>    2. Launch DBCreate174.java
>>>    3. Put only h2-1.3.176.jar in the path
>>>    4. Launch DBTriggerBug176.java
>>>    5. crash
>>>
>>> Hope this helps. Let me know if I can be of further assistance.
>>>
>>>       Germano
>>>
>>>
>>>
>>>  --
> 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+unsubscr...@googlegroups.com.
> To post to this group, send email to h2-database@googlegroups.com.
> Visit this group at http://groups.google.com/group/h2-database.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to