You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LiteDB打开现有数据库文件时抛出System.IO.FileLoadException问题求助

LiteDB打开已存在数据库抛出System.IO.FileLoadException异常问题

打开已存在的LiteDB数据库时遇到异常:数据库文件确实存在,但打开时抛出System.IO.FileLoadException,异常堆栈信息如下:

Exception Info: System.IO.FileLoadException
   at LiteDB.Result`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].GetValue()
   at LiteDB.Engine.HeaderPage.LoadPage()
   at LiteDB.Engine.LiteEngine.Open()
   at LiteDB.Engine.LiteEngine..ctor(LiteDB.Engine.EngineSettings)
   at LiteDB.ConnectionString.CreateEngine(System.Action`1<LiteDB.Engine.EngineSettings>)
   at LiteDB.LiteDatabase..ctor(LiteDB.ConnectionString, LiteDB.BsonMapper)

架构层调用LiteDB的代码如下:

public LiteDatabase Instance { get; }

public DBManager(string productName, string dbName, string dbPath)
{
    _productName = productName;
    _dbName      = dbName;
    Instance     = new LiteDatabase(Path.Combine(dbPath, "XTOOLZ", _productName, _dbName));
}

数据库路径为:C:\Users\Public\Documents\treffsicherheitsnachweis.ch\TSN Card Generator\Database\XTOOLZ.TSNCard.Settings

数据库不存在时可正常创建,但再次调用打开时仍会抛出该异常,使用的是最新版NuGet包。


可能的原因及排查方案

1. 数据库文件损坏

创建数据库时如果程序异常退出、系统断电等,可能导致文件头部或数据块损坏,从而无法正常加载:

  • 用LiteDB Studio打开该数据库文件,验证是否能正常读取。如果工具也无法打开,说明文件损坏。
  • 尝试使用LiteDB的修复功能:
    using var engine = new LiteEngine(new EngineSettings {
        Filename = "你的数据库路径",
        Repair = true
    });
    engine.Checkpoint();
    

2. 文件权限或锁定问题

  • 检查数据库文件的权限:右键文件 → 属性 → 安全,确认当前运行程序的用户拥有读写权限(即使Public目录默认开放权限,也可能被组策略或杀毒软件限制)。
  • 排查文件是否被其他进程占用:用Process Explorer搜索该文件路径,看是否有未释放的进程持有文件句柄。如果有,关闭对应进程后重试。

3. 连接模式或路径问题

  • 尝试显式指定连接字符串的Connection参数为Shared,允许多个进程/实例访问:
    var fullPath = Path.Combine(dbPath, "XTOOLZ", _productName, _dbName);
    var connString = new ConnectionString($"Filename={fullPath}; Connection=Shared");
    Instance = new LiteDatabase(connString);
    
  • 验证路径生成是否正确:在构造函数中打印fullPath的值,确认和预期路径完全一致,避免因路径拼接错误导致加载错误的文件。

4. NuGet包版本兼容性

虽然使用的是最新版NuGet包,但如果创建数据库时使用的是旧版本,更新后可能出现兼容性问题:

  • 删除现有数据库文件,用当前版本重新创建,再尝试打开,看是否仍报错。

内容的提问来源于stack exchange,提问作者user1035681

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:23:09