web-dev-qa-db-fra.com

Comment mettre à niveau sqlite 3.8.2 vers> = 3.8.3

Dans un Env virtuel avec Python 3.7.2, j'essaye d'exécuter python manage.py startap myapp et j'obtiens cette erreur:

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).

J'utilise Ubuntu Trusty 14.04 Server.

Comment mettre à niveau ou mettre à jour ma version sqlite vers> = 3.8.3?

L'Iran

$ 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]

et

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.

EDIT: le settings.py est standard:

DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
8
Chubeez

Je viens de vivre ça. J'ai dû installer une nouvelle version distincte de SQLite, à partir de

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

C'est dans/usr/local/bin. Ensuite, j'ai dû recompiler Python, en lui disant de regarder là-bas:

Sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
Sudo LD_RUN_PATH=/usr/local/lib make altinstall

Pour vérifier quelle version de SQLite Python utilise:

$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13) 
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
8
Mark Bailey

J'ai appliqué le correctif suivant et cela a fonctionné pour mon serveur CentOS 7.x.

Éditer /usr/lib64/python3.6/site-packages/Django/db/backends/sqlite3/base.py fichier selon l'exemple ci-dessous:

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)
4
jaeyoung jeong

En plus des réponses mentionnées ci-dessus, au cas où vous rencontriez ce problème sur Travis CI, ajoutez dist: xenial directive pour le corriger.

4
Artur Barseghyan

Cette erreur survient car votre environnement virtuel n'a pas pu se connecter à la base de données sqlite3 récemment mise à jour. Pour cela, vous devez mettre à jour votre version de base de données sqlite3 manuellement, puis en donner le chemin à votre environnement virtuel. Veuillez suivre les étapes ci-dessous:

  1. Téléchargez le dernier sqlite3 sur le site officiel. ( https://www.sqlite.org/download.html ) wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz

  2. Ensuite, allez dans ce dossier et lancez la commande. tar xvfz sqlite-autoconf-3070603.tar.gz

  3. Accédez au dossier correspondant. cd sqlite-autoconf-3070603

  4. ./configure

  5. make

  6. make install Cela peut prendre trop de temps mais attendez la fin. Si cela prend trop, mettez fin à ce processus et poursuivez le reste des étapes.

  7. Vous avez maintenant installé avec succès sqlite3 mis à jour. Maintenant, lancez cette commande Sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations

  8. Ouvrez votre fichier d'activation de l'environnement virtuel (par exemple, venv/bin/activate) et ajoutez cette ligne en haut du fichier ... export LD_LIBRARY_PATH="/usr/local/lib"

  9. Maintenant, pour vérifier, vous pouvez taper ces commandes dans votre python Shell

$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13) 
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
3
Parth Ghinaiya

Si vous ne voulez pas recompiler Python et vous allez utiliser un virtualenv, vous pouvez le faire pour le configurer sans affecter le système dans son ensemble (je l'ai fait avec Ubuntu 16):

  1. Téléchargez l'archive tar SQLite depuis https://www.sqlite.org/download.html
  2. Extrayez le contenu et le CD dans le dossier.
  3. Exécutez les commandes suivantes:

    ./configure

    Sudo make install

  4. Vous devez maintenant modifier le script d'activation utilisé pour démarrer virtualenv afin que python recherche au bon endroit le SQLite nouvellement installé. Ajoutez simplement la ligne suivante en haut du fichier:

    export LD_LIBRARY_PATH = "/ usr/local/lib"

Maintenant, lorsqu'il est actif, Django 2.2+ devrait fonctionner correctement dans virtualenv. J'espère que cela vous aidera.

3
PyUnchained