Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Berkeley DB JE Base API二级数据库和序列的问题_Java_Sequence_Berkeley Db_Berkeley Db Je - Fatal编程技术网

Java Berkeley DB JE Base API二级数据库和序列的问题

Java Berkeley DB JE Base API二级数据库和序列的问题,java,sequence,berkeley-db,berkeley-db-je,Java,Sequence,Berkeley Db,Berkeley Db Je,我有一个类文档,它由Id(int)和Url(String)组成。我想在Id上有一个主索引,在Url上有一个辅助索引。我还想要一个Id自动递增的序列。所以我创建了一个二级数据库,然后创建了一个序列。在序列初始化期间,我得到一个异常: Exception in thread "main" java.lang.IllegalArgumentException at com.sleepycat.util.UtfOps.getCharLength(UtfOps.java:137) at com.sle

我有一个类文档,它由
Id(int)
Url(String)
组成。我想在
Id
上有一个主索引,在
Url
上有一个辅助索引。我还想要一个Id自动递增的序列。所以我创建了一个二级数据库,然后创建了一个序列。在序列初始化期间,我得到一个异常:

Exception in thread "main" java.lang.IllegalArgumentException
 at com.sleepycat.util.UtfOps.getCharLength(UtfOps.java:137)
 at com.sleepycat.util.UtfOps.bytesToString(UtfOps.java:259)
 at com.sleepycat.bind.tuple.TupleInput.readString(TupleInput.java:152)
 at pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.MyDocumentBiding.entryToObject(MyDocumentBiding.java:12)
 at pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.MyDocumentBiding.entryToObject(MyDocumentBiding.java:1)
 at com.sleepycat.bind.tuple.TupleBinding.entryToObject(TupleBinding.java:76)
 at pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.UrlKeyCreator.createSecondaryKey(UrlKeyCreator.java:20)
 at com.sleepycat.je.SecondaryDatabase.updateSecondary(SecondaryDatabase.java:835)
 at com.sleepycat.je.SecondaryTrigger.databaseUpdated(SecondaryTrigger.java:42)
 at com.sleepycat.je.Database.notifyTriggers(Database.java:2004)
 at com.sleepycat.je.Cursor.putNotify(Cursor.java:1692)
 at com.sleepycat.je.Cursor.putInternal(Cursor.java:1616)
 at com.sleepycat.je.Cursor.putNoOverwrite(Cursor.java:663)
 at com.sleepycat.je.Sequence.<init>(Sequence.java:188)
 at com.sleepycat.je.Database.openSequence(Database.java:546)
 at pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.MyFullTextSearchEngine.init(MyFullTextSearchEngine.java:131)
 at pl.edu.mimuw.zbd.berkeley.zadanie.testy.MyFullTextSearchEngineTest.main(MyFullTextSearchEngineTest.java:18)
线程“main”java.lang.IllegalArgumentException中的异常 位于com.sleepycat.util.UtfOps.getCharLength(UtfOps.java:137) 在com.sleepycat.util.UtfOps.bytesToString上(UtfOps.java:259) 在com.sleepycat.bind.tuple.TupleInput.readString(TupleInput.java:152)上 位于pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.MyDocumentBiding.entryToObject(MyDocumentBiding.java:12) 在pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.MyDocumentBiding.entryToObject(MyDocumentBiding.java:1) 在com.sleepycat.bind.tuple.TupleBinding.entryToObject(TupleBinding.java:76)上 位于pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.UrlKeyCreator.createSecondaryKey(UrlKeyCreator.java:20) 位于com.sleepycat.je.SecondaryDatabase.updateSecondary(SecondaryDatabase.java:835) 位于com.sleepycat.je.SecondaryTrigger.databaseUpdated(SecondaryTrigger.java:42) 在com.sleepycat.je.Database.notifyTriggers(Database.java:2004) 在com.sleepycat.je.Cursor.putNotify上(Cursor.java:1692) 位于com.sleepycat.je.Cursor.putInternal(Cursor.java:1616) 位于com.sleepycat.je.Cursor.putNoOverwrite(Cursor.java:663) Sequence.(Sequence.java:188) 在com.sleepycat.je.Database.openSequence(Database.java:546) 位于pl.edu.mimuw.zbd.berkeley.zadanie.rozwiazanie.myfulltextsearchine.init(myfulltextsearchine.java:131) 位于pl.edu.mimuw.zbd.berkeley.zadanie.testy.MyFullTextSearchEngineTest.main(MyFullTextSearchEngineTest.java:18) 在序列初始化期间,辅助数据库似乎被迫更新。当我调试MyDocument的entryToObject方法时,它试图转换为object的字节似乎是随机的


我做错了什么?

我发现解决方案是为序列创建一个单独的db,或者让SecondaryKeyCreator在添加序列数据时进行检测,并在这种情况下返回false