J'ai parcouru les forums mais je ne trouve pas de réponse ni même de documentation à ce sujet.
Lors de l'exécution de la commande:
python manage.py inspectdb
J'obtiens le erreur:
mysqlclient 1.3.13 or newer is required; you have 0.9.3
J'ai essayé toutes les corrections suggérées, notamment: -mise à niveau pip -installation d'une roue différente (32 bits au lieu de 64), à savoir mysqlclient-1.4.2-cp37-cp37m-win32.whl avec la commande pip install mysqlclient-1.4.2- cp37-cp37m-win32.whl (cela fonctionne bien sans erreur mais ne fait pas le travail requis!)
Mon objectif est de simplement connecter une base de données mysql héritée (fonctionnant à l'intérieur de XAMPP et myphpadmin) à Django. J'ai suivi la documentation qui passe à côté de la nécessité d'installer mysqlclient, et je suis resté bloqué à ce stade.
C'est ainsi que je l'ai corrigé.
Accédez à votre répertoire d'installation Django/db/backends/mysql. Vérifiez votre chemin dans le message d'erreur.
J'utilise pipenv donc mon chemin est:
/home/username/.local/share/virtualenvs/project-env/lib/python3.7/site-packages/Django/db/backends/mysql
Ouvrez le fichier base.py et recherchez:
version = Database.version_info
Mettez un pass à l'intérieur de la ligne if et comment:
raise ImproperlyConfigured ('mysqlclient 1.3.13 ou plus récent est requis; vous avez% s.'% Base de données .version)
Comme ça.
if version < (1, 3, 13):
pass
'''
raise ImproperlyConfigured(
'mysqlclient 1.3.13 or newer is required; you have %s.'
% Database.__version__
)
'''
Enregistrez, fermez ce fichier et ouvrez operations.py.
Rechercher:
query = query.decode(errors='replace')
et changer le décodage pour coder
query = query.encode(errors='replace')
Maintenant, essayez d'exécuter le serveur.
Je suppose que votre projet utilise pymysql au lieu de mysqlclient.
Vous pouvez essayer de rechercher l'extrait de code suivant dans votre projet. Si vous le trouvez, veuillez essayer les méthodes suivantes pour résoudre ce problème:
import pymysql
pymysql.install_as_MySQLdb()
Insérez une ligne de code entre ces deux pour le faire ressembler à ceci:
import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()
Essayez ensuite de démarrer votre projet.
libssl-dev
a été installé avant pip install mysqlclient
.J'ai eu le même problème que la version inférieure de mysqlclient a été installée en raison de pymysql.
OS: Linux Mint 19.1
Python: .6.8
Django: 2.2.2
pip3 uninstall mysqlclient
pip3 uninstall pymysql
pip3 install mysqlclient
ce problème se produit lorsque vous créez un projet Django dans pycharm par défaut. Il est dû à la version par défaut de Django est 2.2.6, il vous suffit donc de rétrograder le = Django version à 2.1.7, et l'erreur dans le terminal a disparu.
pip install Django==2.1.7
c'est tout!
Au lieu de modifier la configuration interne, essayez de mettre à niveau la version de mysqlclient
pip3 install -U mysqlclient
Si ce n'est pas essentiel pour vous, en variante, rétrogradez simplement votre Django framework
de 2.2.2
(par exemple) à 2.1
.
Je trouvais une solution à ce problème depuis longtemps. J'utilisais Ubuntu 18.04 et j'ai trouvé cette solution utile pour python version 3.7.5
Étape 1. Installez libpython3.7-dev via Sudo apt-get install
> Sudo apt-get install libpython3.7-dev
Étape 2: installer mysqlclient
> python3 -m pip install mysqlclient==1.4.6
J'ai eu un problème similaire, je devenais
"Django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 ou plus récent est requis; vous avez 1.3.12."
Je suis donc allé au C:\Users\username\Envs\env\Lib\site-packages\Django\db\backends\mysql
, ouvert base.py et changé cette ligne ...
if version < (1, 3, 13):
à...
if version < (1, 3, 10):
qui est une version moindre que la mienne et ça a marché.
Installez la roue:
pip installer la roue
Téléchargez le fichier que vous souhaitez à partir d'ici: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
Déplacez-vous dans votre répertoire Téléchargements (je suppose que ce sera cd Downloads
)
pip install <file name>
AVERTISSEMENT!! Vous CANT éditez le nom du fichier .whl téléchargé. Il contient certaines informations nécessaires à l'installation.