Sqlite在低版本Centos系统启动失败问题解决

背景:

本人开发的.net core web端程序,数据存储使用Sqlite实现,环境是.net core 6、centos 7

 

问题:

在服务器启动后,会提示找不到“e_sqlite3”或依赖库的错误,导致程序不可用

 

解决:

通过deepseek协助,找到原因是“是因为你的 CentOS 系统自带的 GLIBC 版本较低,而你的 .NET Core 程序依赖的 libe_sqlite3.so 文件是在一个更高 GLIBC 版本的环境下编译的。GLIBC(GNU C Library)是 Linux 系统中最核心的库之一,许多应用程序都依赖于它”

解决方案优点缺点适用场景
使用 Docker 安全、隔离性好,不影响主机系统,部署简单 需要学习 Docker 基本操作 强烈推荐大多数场景,尤其生产环境
降低 NuGet 包版本 相对简单,无需改动服务器环境 可能受限于旧版本功能,非根本解决方案,未来可能再遇兼容性问题 快速尝试,应用对 EF Core 版本不敏感
静态编译 分发简单,减少运行时依赖 可能增加二进制文件大小,需要工具链支持 适合需要简化部署的场景
升级系统 GLIBC “根本”解决 极其危险,易导致系统崩溃,不推荐 仅建议在隔离的测试环境或深知后果的情况下尝试

我使用降低 NuGet 包版本

降低后引用如下:

<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.4" />
    <PackageReference Include="Microsoft.Data.Sqlite" Version="7.0.20" />
posted @ 2025-09-04 20:39  冬音  阅读(29)  评论(0)    收藏  举报