Je suis nouveau sur django, j'ai créé un projet et une application et je souhaite connecter mon projet au mongodb. lorsque j'entre la commande python manage.py migrate
, j'obtiens l'erreur mentionnée ci-dessous.
J'ai supprimé la base de données et effacé toutes les migrations dans la table django_migration et supprimé les fichiers de migration dans le dossier migrations créé. Toujours la même erreur.
S'il vous plaît, aidez-moi. Merci d'avance
Erreur:
from django.db import models # Create your models here. class dummy(models.Model): name= models.CharField(max_length=100, blank=True, null= True)
L'exception ci-dessus était la cause directe de l'exception suivante:
DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': 'DB_name', 'HOST':'localhost', # 'PORT': 27017, # 'USER':'', # 'PASSWORD':'' },
7 Réponses :
J'ai le même problème avec u, j'ai essayé avec sqlite3 comme base de données, et les données sont comme ceci:
donc les données ne sont pas vides !!
Et j'ai essayé de changer la commande sql comme suit (ligne 760 à sql2mongo \ query.py):
statement = statement[0] sm_type = statement.get_type() if sm_type=='INSERT': self._sql = 'INSERT INTO "django_migrations" ("app", "name", "applied") VALUES ("test", "windy", "2019-03-15 12:00")'
mais a toujours échoué.
J'ai résolu ce problème. Le problème peut être la version de sqlparse - sqlparse 0.2.4 fonctionne bien, mais pas sqlparse 0.3.0. Utilisez la commande suivante:
pip install sqlparse==0.2.4 --user
Fait cela et a fonctionné. Mais ce qui est vu - si je comprends bien - est d'installer la dernière version de sqlpars. Je pense que cela parce que la sortie Collecting sqlparse == 0.2.4 Utilisation de https://files.pythonhosted.org/packages/65/85/20bdd72f4537cf 2c4d5d005368d502b2f4 64ede22982e724a82c86 268eda / sqlparse-0.2. en cache py2.py3-none-any.w hl Installation des paquets collectés: sqlparse sqlparse-0.3.1 installé avec succès
Installez simplement sqlprase
pour résoudre ce problème.
Téléchargez-le github sqlprase
pip install filename.zip
Après avoir créé le projet django, désinstallez sqlparse en tapant
python3 manage.py migrate
Puis installez sqlparse version = 0.2.4 en tapant
pip3 install sqlparse==0.2.4
Utilisez python manage.py migrate --fake-initial
la première fois que vous migrez votre projet.
Dans setting.py ajouter
INSTALLED_APPS = [
"APP_NAME.apps.APP_NAMEConfig",
...,
...,
]
Je l'ai résolu de cette façon sqlparse == 0.2.4
et djongo == 1.3.3
et django == 2.1.7
J'ai mis à jour djongo avec pip install --upgrade djongo
et j'ai effectué les migrations python manage.py migrate --fake-initial
et cela a été corrigé.
Le
TypeError: documents doit être une liste non vide
provient du pilote pymongo et signifie ce qu'il dit, car il a obtenu une "liste vide" quand il attendait une entrée. Avez-vous d'abord exécuté unepython manage.py makemigrations
? Parce que l'erreur semble indiquer qu'il n'y a "rien à faire". Vous avez dit que vous avez "supprimé", mais AFIAK vous devez toujours lancer lesmakemigrations
en premier.J'ai d'abord effectué
python manage.py makemigrations
puis j'ai exécutépython manage.py migrate
, toujours pas de chance