Je suis donc en train d'itérer rapidement sur une application Django en ce moment et j'ajuste constamment models.py. Au cours d'une journée ou deux de programmation et de test, je génère quelques dizaines de migrations fichiers. Parfois, je déchire vraiment le schéma et le refais complètement. Cela provoque le processus de migration se plaindre beaucoup sur les valeurs par défaut et les valeurs nulles et ainsi de suite. Si possible, je voudrais juste effacer toutes les -démarrer les migrations maintenant que je sais enfin ce que je fais. Mon approche jusqu'à présent a été la suivante:
__init__.py
.DELETE FROM south_migrationhistory WHERE app_name='my_app';
./manage.py makemigrations my_app
- cela génère un 0001_initial.py
fichier dans mon dossier de migrations../manage migrate my_app
- Je m'attends à ce que cette commande reconstruise toutes mes tables, mais à la place, elle dit: "Aucune migration à appliquer."Ce qui donne?
Est également le south_migrationhistory
table de base de données toujours en jeu maintenant que j'ai vidé le sud et que je suis passé à Django 1.7?
Merci.
Ainsi, le plan pas à pas décrit dans ma question fonctionne, mais au lieu de supprimer des lignes de south_migrationhistory
table de base de données, j'ai dû supprimer des lignes du Django_migrations
table de base de données.
La commande est: DELETE FROM Django_migrations WHERE app='my_app'
Une fois cela fait, vous pourrez réexécuter vos migrations à partir de zéro.
Je voulais juste mettre toutes les étapes dans un format de commande:
NOTE: Les commandes ci-dessous sont assez destructrices, c'est un moyen de start from scratch
comme l'OP l'a demandé.
Après un commentaire de mikeb
j'ai pensé ajouter cette ligne:
PRE - VÉRIFIEZ LES FICHIERS QUE VOUS VOULEZ SUPPRIMER
find . -path *migrations* -name "*.py" -not -path "*__init__*"
Ensuite, ajustez la commande à l'étape 1
à un qui fonctionne pour votre environnement de développement.
find . -path *migrations* -name "*.py" -not -path "*__init__*" -exec rm {} \; # make sure to be in your projects path
Sudo -u postgres bash -c "psql -c \"DROP DATABASE rootedin;\""
Sudo -u postgres bash -c "psql -c \"CREATE DATABASE rootedin;\""
Sudo -u postgres bash -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE rootedin to vagrant;\"" # vagrant is my current user
python3 manage.py makemigrations
python3 manage.py migrate