After some problems following a crash and some attempts to fix them, I have
now
a database which
1) works fine if I open it read/write (in embedded mode), initialize it
using
";MV_STORE=FALSE" appended to the URL and running
SET DATABASE TRANSACTION CONTROL MVCC
SET FILES LOG FALSE
SET FILES NIO SIZE 4096
SET AUTOCOMMIT FALSE
SET CACHE_SIZE 1048576
then processing, then commiting and shutting down
2) throws an exception with error message "The database is read only
[90097-193]"
(see stack trace at the bottom of the email)
during establishing the connection when I try to open it read only using
";MV_STORE=FALSE;ACCESS_MODE_DATA=r;FILE_LOCK=no" appended to the URL
However, before the crash happened, that database could be used in
read-only mode without any
problem.
What I do not understand at all is why the DB works fine when opening,
using and storing
in read/write mode and why it wants it to be writable when I open it
read-only? If there would be
any scheduled operations for fixing data, surely that should have happened
already during the
latest shutdown?
Is there any way to fix the database so that it can be used in read-only
mode again apart from
exporting all data and importing into a new database (which I want to avoid
because the
database is rather big).
If there is no way to fix the database in place, what is the fastest and
most efficient way to
export and import data or to backup and re-create the database?
How can I make sure that this problem will not occur again in the future?
----
Stack trace:
Exception in thread "main" org.h2.jdbc.JdbcSQLException: The database is
read only [90097-193]
at
org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.message.DbException.get(DbException.java:144)
at org.h2.engine.Database.checkWritingAllowed(Database.java:1927)
at org.h2.store.PageStore.logUndo(PageStore.java:1061)
at org.h2.store.PageFreeList.allocate(PageFreeList.java:138)
at org.h2.store.PageStore.allocatePage(PageStore.java:1147)
at
org.h2.store.PageInputStream.allocateAllPages(PageInputStream.java:144)
at org.h2.store.PageLog.recover(PageLog.java:266)
at org.h2.store.PageStore.recover(PageStore.java:1403)
at org.h2.store.PageStore.openExisting(PageStore.java:367)
at org.h2.store.PageStore.open(PageStore.java:288)
at org.h2.engine.Database.getPageStore(Database.java:2482)
at org.h2.engine.Database.open(Database.java:695)
at org.h2.engine.Database.openDatabase(Database.java:273)
at org.h2.engine.Database.<init>(Database.java:267)
at org.h2.engine.Engine.openSession(Engine.java:64)
at org.h2.engine.Engine.openSession(Engine.java:176)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154)
at org.h2.engine.Engine.createSession(Engine.java:137)
at org.h2.engine.Engine.createSession(Engine.java:27)
at
org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:115)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:99)
at org.h2.Driver.connect(Driver.java:69)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.