django 在哪里寻找 SQLite 实例?(需要 SQLite 3.8.3 或更高版本(发现 3.7.17))

django 在哪里寻找 SQLite 实例?(需要 SQLite 3.8.3 或更高版本(发现 3.7.17))

我已经将一个 django 项目克隆到 vps,现在正尝试运行它,但是在尝试时出现此错误migrate

$ python manage.py migrate
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

当我检查 sqlite 的版本时,它是 3.7.17,所以我从 sqlite 网站下载了最新版本并将其替换为旧版本,现在当我对其进行版本控制时,它给出:

$ sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7

当我尝试迁移项目时,我仍收到与之前完全相同的消息,这意味着未找到较新的版本。我是 Linux 新手,非常感激任何帮助。

答案1

我遇到了同样的问题。我已经安装了 sqlite 3.28.0,但在迁移时遇到了同样的错误。

检查错误的输出,我发现 base.py 文件的第 63 行由于调用 sqlite_version_info 函数而引发了异常。

您可以通过以下链接查看规范: DB-API 2.0 规范

sqlite3.sqlite_version_info
“运行时 SQLite 库的版本号,作为整数元组。”

经过一些测试后,我发现的解决方案是将 LD_LIBRARY_PATH 设置为新 sqlite 的路径:

导出 LD_LIBRARY_PATH="/usr/local/lib"

设置此变量后,您可以使用一个小 Python 脚本检查结果:

from sqlite3 import dbapi2 as Database
print(Database.sqlite_version_info)

结果应该是这样的:(3,28,0)

通过这种方法,我可以迁移并继续设置 Django。如果我找到其他解决方案,我会更新这篇文章。希望这能有所帮助

答案2

对我来说,降级Django到以前的版本,解决了它:

pip install Django==2.1.* --user

答案3

我也遇到了同样的问题。我的解决方案是从源代码构建 sqlite3,配置如下:

配置--prefix =“/usr”--libdir =“${exec_prefix}/lib64”

构建并安装 sudo make install。

然后我必须:

cd /usr/lib64 && sudo ln -sf libsqlite3.so.0.8.6 libsqlite3.so.0

libsqlite3.so.0 链接指向 libsqlite3.so.0.8.6-3.7,这是我对旧 libsqlite3.so 的备份,它需要指向新安装的库。

相关内容