leveldb icon indicating copy to clipboard operation
leveldb copied to clipboard

Cannot open table, No such file XYZ.sst

Open wolfposd opened this issue 9 years ago • 8 comments

Not sure if Bug or different LevelDB version. But in my DB there are no ...sst files only ...ldb files, so i get the following error:

java.lang.RuntimeException: Could not open table 3 at org.iq80.leveldb.impl.TableCache.getTable(TableCache.java:97) at org.iq80.leveldb.impl.TableCache.newIterator(TableCache.java:78) at org.iq80.leveldb.impl.TableCache.newIterator(TableCache.java:73) at org.iq80.leveldb.impl.Version.getLevel0Files(Version.java:146) at org.iq80.leveldb.impl.DbImpl.internalIterator(DbImpl.java:776) at org.iq80.leveldb.impl.DbImpl.iterator(DbImpl.java:742) at org.iq80.leveldb.impl.DbImpl.iterator(DbImpl.java:733) at org.iq80.leveldb.impl.DbImpl.iterator(DbImpl.java:1) at java.lang.Iterable.forEach(Iterable.java:74) at com.github.wolfposd.StartupLevelDB.main(StartupLevelDB.java:30) Caused by: java.io.FileNotFoundException: mydatabase.db/000003.sst (No such file or directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.(FileInputStream.java:138) at org.iq80.leveldb.impl.TableCache$TableAndFile.(TableCache.java:122) at org.iq80.leveldb.impl.TableCache$TableAndFile.(TableCache.java:117) at org.iq80.leveldb.impl.TableCache$2.load(TableCache.java:66) at org.iq80.leveldb.impl.TableCache$2.load(TableCache.java:1) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527) at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) at com.google.common.cache.LocalCache.get(LocalCache.java:3937) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) at org.iq80.leveldb.impl.TableCache.getTable(TableCache.java:90) ... 9 more

However, when i change org.iq80.leveldb.impl.Filename.java#59 from "sst" to "ldb" it works fine

wolfposd avatar Sep 12 '16 10:09 wolfposd

Hi @wolfposd. I think your issue is due a different leveldb version. Current repository version only supports sst files but this was changed in https://github.com/google/leveldb/commit/0b9a89f40efdd143fa1426e7d5cd997f67ba6361 (Release LevelDB 1.14 release). I think it was due an extension conflict in Windows. You can find more info here.

AlanVerbner avatar Sep 06 '17 17:09 AlanVerbner

Use: https://github.com/fusesource/leveldbjni

dzwiener avatar Oct 19 '17 03:10 dzwiener

Same problem with org.fusesource.leveldbjni with windows 10. I tried Version 1.8, 1.8-redhat.003, 1.13-redhat.002. I only need Readonly-Access to the leveldb, so my workaround is, copying all files and rename *.ldb to *.sst

nicman42 avatar Oct 19 '17 07:10 nicman42

Exact same error? I was able to read my .ldb files when using that library.

dzwiener avatar Oct 19 '17 07:10 dzwiener

Not exactly the same error but: org.fusesource.leveldbjni.internal.NativeDB$DBException: Corruption: 7 missing files; e.g.: C:\Users\zimmermann\AppData\Local\Temp\leveldb7307729845232549361/000005.sst at org.fusesource.leveldbjni.internal.NativeDB.checkStatus(NativeDB.java:200) ~[leveldbjni-all-1.8.jar:1.8] at org.fusesource.leveldbjni.internal.NativeDB.open(NativeDB.java:218) ~[leveldbjni-all-1.8.jar:1.8] at org.fusesource.leveldbjni.JniDBFactory.open(JniDBFactory.java:168) ~[leveldbjni-all-1.8.jar:1.8] at com.zimmerbell.repaper.sources.MomentumSource.updateFromLevelDB(MomentumSource.java:85) ~[classes/:?] at com.zimmerbell.repaper.sources.MomentumSource.update(MomentumSource.java:69) ~[classes/:?] at com.zimmerbell.repaper.Repaper.update(Repaper.java:243) [classes/:?] at com.zimmerbell.repaper.Repaper.<init>(Repaper.java:96) [classes/:?] at com.zimmerbell.repaper.Repaper.main(Repaper.java:84) [classes/:?]

nicman42 avatar Oct 19 '17 07:10 nicman42

It sounds like you were renaming files when you were making a hack. Perhaps if you redownload the DB it will resolve the issue? If not, could you post your brief code grabbing an itr?

dzwiener avatar Oct 19 '17 07:10 dzwiener

I quickly wrote a test that opens the leveldb of (a copy of) your chrome profile: https://github.com/noooz/repaper/blob/master/src/test/java/com/zimmerbell/repaper/ReadLevelDBTest.java It fails, if you remove the renaming in line 26.

nicman42 avatar Oct 19 '17 08:10 nicman42

I have the same problem @dain Can you help us?

quwenzhe avatar Jul 21 '20 07:07 quwenzhe