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

树莓派B3部署ASP.NET Core 2.0应用遇SQLite Error 14错误求助

解决树莓派ASP.NET Core 2.0中SQLite Error 14(无法打开数据库文件)的问题

嘿,这个问题我在树莓派部署ASP.NET Core应用时也踩过坑,SQLite Error 14基本都是路径错误、权限不足或者文件不存在导致的,给你几个具体的排查和解决步骤:

1. 核对数据库路径的正确性

  • 树莓派是Linux系统,路径必须用正斜杠/,绝对不能用Windows的反斜杠\,这是最容易犯的低级错误
  • 别依赖相对路径!ASP.NET Core的工作目录可能和你预期的不一样(比如用systemd托管时),建议直接用绝对路径,比如/home/pi/MyAspNetApp/Data/app.db
  • 可以在代码里临时输出实际路径验证,比如在Program.cs里加一行:
    Console.WriteLine($"当前数据库路径: {Configuration.GetConnectionString("DefaultConnection")}");
    
    启动应用后看控制台输出,确认路径是否指向正确的位置

2. 修复文件和目录的读写权限

SQLite不仅需要读写数据库文件,还需要对文件所在目录有读写权限(用来生成临时文件和日志),所以要确保运行应用的用户有足够权限:

  • 先确认运行ASP.NET Core的用户:如果是你手动用dotnet run启动,就是当前登录的pi用户;如果用nginx反向代理或者systemd托管,可能是www-data用户
  • 修改目录权限:
    sudo chmod -R 755 /home/pi/MyAspNetApp/Data
    
  • 修改文件所有者(替换成你的运行用户):
    sudo chown -R pi:pi /home/pi/MyAspNetApp/Data
    # 如果是www-data用户就用下面的命令
    # sudo chown -R www-data:www-data /home/pi/MyAspNetApp/Data
    

3. 确认数据库文件是否存在且可用

  • 如果是新应用需要自动创建数据库,确保你的DbContext里有初始化逻辑,比如在Program.cs里添加:
    using (var scope = app.ApplicationServices.CreateScope())
    {
        var dbContext = scope.ServiceProvider.GetRequiredService<YourDbContext>();
        dbContext.Database.EnsureCreated(); // 自动创建数据库和表结构
    }
    
  • 如果是从Windows复制过来的数据库文件,先检查文件完整性:在树莓派终端执行ls -l /home/pi/MyAspNetApp/Data,看文件大小是否和原文件一致;也可以手动用SQLite命令行测试:
    sqlite3 /home/pi/MyAspNetApp/Data/app.db
    
    如果手动都打不开,说明文件损坏或者路径错误,先解决这个问题再启动应用

4. 检查连接字符串格式

确保appsettings.json里的连接字符串格式正确,比如:

"ConnectionStrings": {
  "DefaultConnection": "Data Source=/home/pi/MyAspNetApp/Data/app.db;"
}

注意:JSON里不需要转义正斜杠,直接写就行;末尾的分号可加可不加,但别写错路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:39:49