Il existe deux modèles de groupes, les étudiants et un seul tableau pour les groupes, le tableau des étudiants a été supprimé.
Comment modifier Django le créer à nouveau? Si je fais makemigrations, il affiche "Aucun changement détecté".
Sur la page d'administration, lorsque je clique sur la table des étudiants, une exception est générée:
relation "students_students" does not exist
Je viens de supprimer mon dossier de migration, de supprimer l'ensemble de la base de données, puis de migrer pour l'application
python3 manage.py makemigration
python3 manage.py migrate
et il est revenu.
Dans Django 1.7, vous pouvez essayer:
1. Delete your migrations folder
2. In the database: DELETE FROM Django_migrations WHERE app = 'app_name'.
You could alternatively just truncate this table.
3. python manage.py makemigrations
4. python manage.py migrate --fake
Si vous travaillez dans Django 1.9.5 c'est la solution à 100% pour résoudre ce problème:
1. Delete your migrations folder
2. In the database: DELETE FROM Django_migrations WHERE app = 'app_name'.
You could alternatively just truncate this table.
3. python manage.py makemigrations app_name
4. python manage.py migrate
Cela fonctionne à 100% pour moi!
Il n’existe pas de moyen facile de demander à Django de recréer une table que vous avez supprimée manuellement. Une fois que votre base de données est modifiée manuellement, la vue de Django sur la base de données (issue des migrations) est différente de la réalité et il peut être difficile à corriger.
Si vous exécutez la commande sqlmigrate , elle vous indiquera le code SQL requis pour créer la table. Vous pouvez exécuter le SQL dans un shell de base de données. En supposant que le nom de votre application est students
et que la migration qui a créé la table était 00XX_create_students.py
, vous feriez:
./manage.py sqlmigrate students 00XX_create_students
Faites attention s'il y a des clés étrangères en provenance ou à destination de la table des étudiants, les contraintes devront également être créées.
Pour Django 2, procédez comme suit:
1. Delete your migrations folder
2. In the database: `DELETE FROM Django_migrations WHERE app = 'app_name';`
3. python manage.py makemigrations app_name
4. python manage.py migrate
5. python manage.py migrate --fake default //This was the key to solve my problem
Renommez le nom de la table supprimée en nom_nouveau_nom dans le fichier models.py et exécutez:
python3 manage.py makemigration
python3 manage.py migrate
renommez à nouveau la table nom_nouveau_nom au nom original et exécutez
python3 manage.py makemigration
python3 manage.py migrate
enfin, allez dans le dbshell et déposez la table some_new_name
Pour Django 1.10.4, j'ai supprimé le fichier db.sqlite3 du dossier du projet, puis j'ai exécuté les commandes suivantes:
Django 1.11.2 utilisant MariaDB, suppression accidentelle d'une table de base de données. Pour recréer la table, essayez ce qui suit: 1/Supprimez tout sauf le répertoire init . Py dans votre répertoire app/migrations 2/select * from Django_migrations; supprimer de Django_migrations où app = 'yourapp'; 3/Vérifiez que votre modèle est bon et exécutez: python manage.py makemigrations 4/python manage.py migrate
Travaille pour moi!
Je crée la table manuellement et ça aide.