مشكلة مع Berkeley DB JE BASE API قواعد البيانات والتسلسلات الثانوية

StackOverflow https://stackoverflow.com/questions/2079020

سؤال

لدي وثيقة صفية تتكون من Id (int) و Url (String). أود الحصول على فهرس أساسي على Id وفهرس ثانوي على Url. أود أيضًا أن يكون لدي تسلسل للتخليص التلقائي للمعرف. لذلك أقوم بإنشاء SecondaryDatabase ثم أقوم بإنشاء تسلسل. أثناء تهيئة التسلسل ، أحصل على استثناء:

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)

يبدو أنه أثناء تهيئة التسلسل ، يتم إجبار قاعدة البيانات الثانوية على التحديث. عندما أقوم بتصحيح طريقة enterObject من myDocumentbiding البايتات التي تحاول تحويلها إلى كائن تبدو عشوائية.

ما الخطأ الذي افعله؟

هل كانت مفيدة؟

المحلول

لقد اكتشفت أن الحل هو إما إنشاء DB منفصل للتسلسل أو لجعل thelyKeyCreator يكتشف عند إضافة بيانات تسلسل وإرجاع خطأ في مثل هذا الموقف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top