J'ai fait un modèle et j'ai exécuté python manage.py syncdb. Je pense que cela a créé une table dans la base de données. Ensuite, j'ai réalisé que j'avais fait une colonne de manière incorrecte, donc je l'ai changé et j'ai exécuté la même commande, pensant qu'elle supprimerait l'ancienne table et en ajouterait une nouvelle.
Ensuite, je suis allé à python manage.py Shell, et j'ai essayé d'exécuter .objects.all (), et il a échoué, disant que la colonne n'existe pas.
Je veux effacer l'ancienne table, puis réexécuter syncdb, mais je ne sais pas comment procéder.
Une autre façon simple de le faire en utilisant Django 1.4 ou inférieur, serait
python manage.py reset app_name
qui supprime et recrée les tables utilisées par les modèles de cette application.
Ceci était obsolète dans Django 1.3 et n'est plus disponible depuis Django 1.5
effacer une application est aussi simple que d'écrire:
./manage.py sqlclear app_name | ./manage.py dbshell
puis pour reconstruire vos tables il suffit de taper:
./manage.py syncdb
Aucune des réponses ne montre comment supprimer une seule table dans une application. Ce n'est pas trop difficile. La commande dbshell
connecte l'utilisateur au shell sqlite3.
python manage.py dbshell
Lorsque vous êtes dans le shell, tapez la commande suivante pour voir la structure de votre base de données. Cela vous montrera tous les noms de table dans la base de données (ainsi que les noms de colonne dans les tables).
SELECT * FROM sqlite_master WHERE type='table';
En général, Django nomme les tables selon la convention suivante: "appname_modelname". Par conséquent, la requête SQL qui atteint votre objectif ressemblera à ce qui suit:
DROP TABLE appname_modelname;
Cela devrait être suffisant, même si la table avait des relations avec d'autres tables. Vous pouvez maintenant vous déconnecter de SQLITE Shell en exécutant:
.exit
Si vous exécutez à nouveau syncdb, Django reconstruira la table en fonction de votre modèle. De cette façon, vous pouvez mettre à jour vos tables de base de données sans perdre toutes les données de l'application. Si vous rencontrez ce problème, un beaucoup, pensez à utiliser South - une application Django qui fera migrer vos tables pour vous.
obtenir les instructions DROP avec
python manage.py sqlclear app_name
puis essayez
python manage.py dbshell
et exécutez l'instruction DROP
consultez http://docs.djangoproject.com/en/dev/ref/Django-admin/
J'ai eu le même problème.
Pour une résolution rapide (si vous ne vous souciez pas de perdre vos tables/données), corrigez votre fichier models.py avec les types de données souhaités, supprimez le dossier Migration et le fichier db.SQLite3,
puis réexécutez les commandes suivantes:
Dans Django 1.9 J'ai dû faire les étapes de Kat Russo, mais la deuxième migration était un peu délicate. Vous devez exécuter
./manage.py migrate --run-syncdb
Dans Django 2.1.7, j'ai ouvert le db.sqlite3
fichier dans navigateur SQLite (il existe également un package Python sur Pypi ) et supprimé la table à l'aide de la commande
DROP TABLE appname_tablename;
puis
DELETE FROM Django_migrations WHERE App='appname';
Ensuite, exécutez à nouveau
python manage.py makemigrations appname
python manage.py migrate appname