我使用以下代码将项插入到数据库中:
using (var db = new LiteDatabase(dataFilePath))
{
LiteCollection<DbEntry> collection = db.GetCollection<DbEntry>("stuff");
collection.InsertBulk(sourceEntries.Select(Mapper.Map<DbEntry>));
}我得到了这个错误:
LiteDB.LiteException: Index key must be less than 512 bytes
at LiteDB.IndexService.AddNode(CollectionIndex index, BsonValue key, Byte level)
at LiteDB.LiteCollection`1.Insert(T document)
at LiteDB.LiteCollection`1.InsertBulk(IEnumerable`1 docs, Int32 buffer)我认为我没有以任何方式摆弄任何索引,但如果有方法可以检查它,请让我知道。
DbEntry看起来有点像这样(没有明确的标识符):
public class DbEntry
{
public string Message { get; set; }
public string Source { get; set; }
}dataFilePath每天都是不同的,有时它可以容纳200MB的数据,现在当文件有大约1.5MB的数据时,就会出现这个错误。
发布于 2016-07-03 20:13:54
对LiteDB不是很熟悉,但有一个建议:
您没有指定您使用的版本。它是稳定的1.4版,还是2.0版?有(was?)1.4中的每个条目限制为1 MB。看看如何将项目存储为文件。
我更愿意显式地设置一个条目ID,通过将字段命名为_id或通过[BsonId]。也许LiteDB正在使用整行作为ID,并在试图为您的表建立索引时被它卡住了。
https://stackoverflow.com/questions/35891040
复制相似问题