![django 在哪里寻找 SQLite 实例?(需要 SQLite 3.8.3 或更高版本(发现 3.7.17))](https://linux22.com/image/1588255/django%20%E5%9C%A8%E5%93%AA%E9%87%8C%E5%AF%BB%E6%89%BE%20SQLite%20%E5%AE%9E%E4%BE%8B%EF%BC%9F%EF%BC%88%E9%9C%80%E8%A6%81%20SQLite%203.8.3%20%E6%88%96%E6%9B%B4%E9%AB%98%E7%89%88%E6%9C%AC%EF%BC%88%E5%8F%91%E7%8E%B0%203.7.17%EF%BC%89%EF%BC%89.png)
我已经将一个 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 的备份,它需要指向新安装的库。