web-dev-qa-db-fra.com

django ne trouve pas la nouvelle version de sqlite? (SQLite 3.8.3 ou version ultérieure est requis (trouvé le 3.7.17)))

J'ai cloné un projet Django vers un Centos 7 vps et j'essaie de l'exécuter maintenant, mais j'obtiens cette erreur lorsque j'essaie de migrate:

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

Quand j'ai vérifié la version de sqlite, c'était 3.7.17, j'ai donc téléchargé la dernière version du site sqlite et l'ai remplacée par l'ancienne, et maintenant quand je la version, elle donne:

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

Toujours lorsque j'essaie de migrer le projet, j'obtiens exactement le même message qu'auparavant, ce qui signifie que la nouvelle version n'est pas trouvée. Je suis nouveau sur Linux et apprécierais toute aide.

19
SIMMORSAL

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'

Pour moi, la nouvelle version de sqlite3 est dans/usr/local/bin, j'ai donc dû recompiler Python, en lui disant d'y regarder:

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

J'espère que ça aide.

4
Mark Bailey

J'ai eu la même erreur dans les versions CentOS 7.6 et Python 3.7. . Je pense que vous utilisez Django 2.2. * une version. Dans la dernière version de Django 2.2 , ils ont changé la version SQLIte , à l'origine de votre problème.

Il s'agit des notes de version de Django 2.2 à propos de SQLite .

La version minimale prise en charge de SQLite est passée de 3.7.15 à 3.8.3.

Vous pouvez donc installer la dernière version de Django 2.1 en utilisant cette commande.

pip install Django==2.1.*

Je pense que le problème est résolu.

32

J'ai résolu une situation similaire avec les correctifs de code suivants. Suivez ces étapes que j'ai utilisées sur mon propre centos7 et tout devrait bien se passer. N'oubliez pas de faire savoir à votre centos7 que vous appelez python3 pas seulement python sinon il appellera le python2 par défaut suivi d'une série d'erreurs dans votre virtualenv.

Installer python3 (depuis la source):

cd ~
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
tar xJf Python-3.7.3.tar.xz
cd Python-3.7.3
./configure
make && make install
export PATH=$HOME/opt/python-3.7.3/bin:$PATH

Exécutez ensuite: source .bash_profile

Confirmation par

python3 --version
Python 3.7.3 

Installer votre sqlite3 (depuis la source):

$ cd ~
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
$ tar zxvf sqlite-autoconf-3290000.tar.gz
cd sqlite-autoconf-3290000

$./configure --prefix=$HOME/opt/sqlite
$ make && make install

Maintenant, c'est ce que vous devez également vous rappeler de faire pour que centos7 sache où chercher votre python3 et non pas par défaut en python2. Sur ton .bash_profile copiez et collez ce morceau de code ou modifiez les chemins en conséquence:

export PATH=$HOME/opt/sqlite/bin:$PATH
export LD_LIBRARY_PATH=$HOME/opt/sqlite/lib
export LD_RUN_PATH=$HOME/opt/sqlite/lib

Rendez-le permanent en exécutant: source .bash_profile et vous avez terminé avec sqlite3 version >= 3.8. Confirmez-le par:

sqlite3 --version 
3.29.0 2019-07-10 17:32:03

Et puis vous pouvez continuer à utiliser python3 pour installer des modules python3 comme Django-2.2.

python3.7 -m pip3 install virtualenv

(myvenv37)[me@test my_project]$ python3.7 -m pip3 install Django
Successfully installed Django-2.2.3 pytz-2019.1 sqlparse-0.3.0

Rappelez-vous, c'est

PYTHON3.7 -m pip3 install MODULE

(myvenv37)[me@test my_project]$ python3.7 manage.py runserver 

et le serveur doit être en cours d'exécution.

Donc, pour conclure, dans le cas ci-dessus, c'était migrate, et devrait ressembler à ceci:

(venv)[me@test my_project]$ python3.7 manage.py migrate
10
Laenka-Oss

Django 2.2 nécessite une version sqlite> = 3.8.3

donc la solution est de mettre à jour votre sqlite :

  1. télécharger depuis sqlite , sélectionnez la version du code source
  2. tar -zxvf sqlite-xxx.tar.gz && cd xx
  3. ./configure && make && make install
  4. mv/usr/bin/sqlite3 /usr/bin/sqlite3.bak
  5. mv xxx/sqlite3/usr/bin/sqlite3
  6. export LD_LIBRARY_PATH="/usr/local/lib" et l'écrire dans ~/.bashrc

test1:

sqlite3 --version 

devrait être votre version

test2:

$python
>>> import sqlite3
>>> sqlite3.sqlite_version

devrait être votre version

6
pumpkindle

J'ai eu le même problème et j'ai lutté avec lui pendant un certain temps. Pour moi, la meilleure solution était de commenter la section BASES DE DONNEES dans le fichier settings.py.

Comme je ne veux pas utiliser la base de données SQLite, le problème n'existe plus. Plus tard, vous pouvez mettre à jour les informations de la BASE DE DONNÉES avec la base de données qui vous convient.

2
Wojtek

une autre option consiste à utiliser le dépôt atomique

wget -O - http://updates.atomicorp.com/installers/atomic |sh
yum install  atomic-sqlite
LD_LIBRARY_PATH='/opt/atomicorp/atomic/root/usr/lib64/' python3
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.8.5'
0
Stavinsky