Corrupt Database: bad file descriptor

155 views
Skip to first unread message

Thom Pischke

unread,
Apr 6, 2007, 11:28:57 AM4/6/07
to H2 Database
For some reason I can no longer connect to our h2 database from our
website. I just get lots of these errors. What's going on? How do I
fix it?

I can connect and query the database normally from the command using
henplus, but the website and hibernate fail when trying to connect.

04-06 10:13:44 database: opening /var/www/data/db/data
org.h2.jdbc.JdbcSQLException: IO Exception: java.io.IOException: Bad
file descriptor [90028-44]
at org.h2.message.Message.getSQLException(Message.java:65)
at org.h2.message.Message.convert(Message.java:368)
at org.h2.store.FileStore.write(FileStore.java:207)
at org.h2.store.LogFile.writeHeader(LogFile.java:445)
at org.h2.store.LogFile.<init>(LogFile.java:68)
at org.h2.store.LogFile.openIfLogFile(LogFile.java:86)
at org.h2.store.LogSystem.loadActiveLogFiles(LogSystem.java:
211)
at org.h2.store.LogSystem.<init>(LogSystem.java:50)
at org.h2.engine.Database.open(Database.java:428)
at org.h2.engine.Database.<init>(Database.java:383)
at org.h2.engine.Engine.openSession(Engine.java:44)
at org.h2.engine.Engine.getSession(Engine.java:85)
at org.h2.engine.Session.createSession(Session.java:141)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:950)
at org.h2.Driver.connect(Driver.java:52)
at
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:
81)
at
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:
96)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool
$1.acquireResource(C3P0PooledConnectionPool.java:89)
at
com.mchange.v2.resourcepool.BasicResourcePool.acquireUntil(BasicResourcePool.java:
665)
at com.mchange.v2.resourcepool.BasicResourcePool.access
$500(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool
$AcquireTask.run(BasicResourcePool.java:1204)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner
$PoolThread.run(ThreadPoolAsynchronousRunner.java:368)
java.io.IOException: Bad file descriptor
at java.io.RandomAccessFile.writeBytes(Native Method)
at java.io.RandomAccessFile.write(RandomAccessFile.java:456)
at org.h2.store.FileStore.write(FileStore.java:205)
at org.h2.store.LogFile.writeHeader(LogFile.java:445)
at org.h2.store.LogFile.<init>(LogFile.java:68)
at org.h2.store.LogFile.openIfLogFile(LogFile.java:86)
at org.h2.store.LogSystem.loadActiveLogFiles(LogSystem.java:
211)
at org.h2.store.LogSystem.<init>(LogSystem.java:50)
at org.h2.engine.Database.open(Database.java:428)
at org.h2.engine.Database.<init>(Database.java:383)
at org.h2.engine.Engine.openSession(Engine.java:44)
at org.h2.engine.Engine.getSession(Engine.java:85)
at org.h2.engine.Session.createSession(Session.java:141)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:950)
at org.h2.Driver.connect(Driver.java:52)
at
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:
81)
at
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:
96)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool
$1.acquireResource(C3P0PooledConnectionPool.java:89)
at
com.mchange.v2.resourcepool.BasicResourcePool.acquireUntil(BasicResourcePool.java:
665)

Thom Pischke

unread,
Apr 6, 2007, 11:35:43 AM4/6/07
to H2 Database
False alarm. This was due to a permissions problem with the *.log.db
file. It was owned by root instead of tomcat, probably due to
accessing via henplus as root.
Reply all
Reply to author
Forward
0 new messages