如何将sqlite 3.8.2升级到> = 3.8.3

Chu*_*eez 6 python sqlite django

在带有Python 3.7.2的虚拟Env中,我尝试运行django,python manage.py startap myapp并且出现此错误:

raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.8.2).
Run Code Online (Sandbox Code Playgroud)

我正在运行Ubuntu Trusty 14.04 Server。

如何将sqlite版本升级或更新为> = 3.8.3?

我跑了

$ apt list --installed | grep sqlite

libaprutil1-dbd-sqlite3/trusty,now 1.5.3-1 amd64 [installed,automatic]
libdbd-sqlite3/trusty,now 0.9.0-2ubuntu2 amd64 [installed]
libsqlite3-0/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
libsqlite3-dev/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
python-pysqlite2/trusty,now 2.6.3-3 amd64 [installed]
python-pysqlite2-dbg/trusty,now 2.6.3-3 amd64 [installed]
sqlite3/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
Run Code Online (Sandbox Code Playgroud)

和

sudo apt install --only-upgrade libsqlite3-0

Reading package lists... Done
Building dependency tree      
Reading state information... Done
libsqlite3-0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.
Run Code Online (Sandbox Code Playgroud)

编辑:这settings.py是库存标准:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
Run Code Online (Sandbox Code Playgroud)

PyU*_*ned 16

如果你不想重新编译 Python 并且你打算使用 virtualenv,你可以这样做来设置它而不影响整个系统(我已经用 Ubuntu 16 完成了这个):

  1. 从https://www.sqlite.org/download.html下载 SQLite tarball
  2. 将内容和 cd 解压缩到文件夹中。
  3. 运行以下命令:

    。/配置

    须藤制作安装

  4. 现在您需要编辑用于启动 virtualenv 的 activate 脚本,以便 python 为新安装的 SQLite 寻找正确的位置。只需在文件顶部添加以下行:

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

现在,当处于活动状态时,Django 2.2+ 应该可以在 virtualenv 中正常工作。希望有帮助。


Par*_*iya 10

出现此错误是因为您的虚拟环境无法连接到新更新的 sqlite3 数据库。为此,您必须手动更新 sqlite3 数据库版本,然后将其路径提供给您的虚拟环境。请按照以下步骤操作:

  1. 从官方网站下载最新的 sqlite3。( https://www.sqlite.org/download.html )wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz

  2. 然后转到该文件夹​​并触发命令。 tar xvfz sqlite-autoconf-3070603.tar.gz

  3. 转到相应的文件夹。 cd sqlite-autoconf-3070603

  4. ./configure

  5. make

  6. make install可能需要太多时间,但要等到结束。如果花费太多,则终止该过程并继续其余步骤。

  7. 现在您成功安装了更新的 sqlite3。现在启动这个命令sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations

  8. 打开虚拟环境的激活文件(例如,venv/bin/activate)并在文件顶部添加这一行... export LD_LIBRARY_PATH="/usr/local/lib"

  9. 现在为了检查你可以在你的 python shell 中输入这个命令

$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13) 
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
Run Code Online (Sandbox Code Playgroud)

  • 我有警告“配置:警告:无法识别的选项:--enable-optimizations”。“--enable-optimizations”从哪里来? (2认同)

Mar*_*ley 7

我刚刚经历过。我必须安装一个单独的更新版本的SQLite,从

https://www.sqlite.org/download.html

在/ usr / local / bin中。然后,我不得不重新编译Python,告诉它在那看:

sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
sudo LD_RUN_PATH=/usr/local/lib make altinstall
Run Code Online (Sandbox Code Playgroud)

要检查使用哪个版本的SQLite Python:

$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13) 
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
Run Code Online (Sandbox Code Playgroud)


小智 5

我已应用以下修复程序,它适用于我的 CentOS 7.x 服务器。

/usr/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py按照以下示例编辑文件:

def check_sqlite_version():
# if Database.sqlite_version_info < (3, 8, 3):
# 2018-07-07, edit
if Database.sqlite_version_info < (3, 6, 3):
    raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
Run Code Online (Sandbox Code Playgroud)