我已经将一个 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 的备份,它需要指向新安装的库。