yekabathula-macbookair2:roster yekabathula$ python manage.py migrate
Operations to perform:
Synchronize unmigrated apps: staticfiles, messages
Apply all migrations: admin, contenttypes, api, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying api.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying sessions.0001_initial... OK
yekabathula-macbookair2:roster yekabathula$ python manage.py syncdb
/Library/Python/2.7/site-packages/Django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)
Operations to perform:
Synchronize unmigrated apps: staticfiles, messages
Apply all migrations: admin, contenttypes, api, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
No migrations to apply.
Après avoir migré python manage.py, les tables ne sont pas créées dans la base de données à partir de mon modèles.py est capable de créer d’autres tables à partir de Django_session etc. Y at-il autre chose que je dois suivre ici?
Je rencontrais un problème similaire dans Django 1.10 et aucune des solutions ci-dessus ne fonctionnait pour moi.
Ce qui a finalement fonctionné a été d'exécuter cette commande:
python manage.py migrate --fake myappname zero
Ceci réinitialise toutes les migrations (à l'état zéro)
Ce suivi par:
python manage.py migrate myappname
créé les tables pour moi.
Si vous ne souhaitez pas restaurer l'état initial (zéro) mais indiquer le numéro de migration 0005 (la dernière migration ayant fonctionné), vous pouvez procéder comme suit:
python manage.py migrate --fake myappname 0005
Et ensuite procéder à la migration réelle:
python manage.py migrate myappname
Plus de détails dans la docs
Dans mon cas, le fichier __init__.py
était absent du dossier APP/migrations /. Si vous n'en avez pas, tout ce dont vous avez besoin est d'un fichier __init__.py
vide.
j'ai rencontré le même problème… .. Après de nombreuses recherches, j'ai trouvé la solution… .. J'utilise Django 1.11,
Si vous voulez recommencer,
1)delete all the files in your migrations folder except __init__.py
2)drop database
3)create database
4)python makemigrations
5)python migrate
si vous avez reset_db, vous pouvez utiliser reset_db au lieu des 2ème et 3ème étapes.
python manage.py reset_db
J'ai eu un problème similaire et je l'ai compris. J'ai plusieurs bases de données. Mon local (celui qui n'est pas mis à jour) est une base de données MySQL. Les autres sont MS SQL Server et MySQL. J'ai des routeurs vers les autres bases de données car je ne les gère pas et j'avais (dans Django 1.6) utilisé les routeurs pour indiquer allow_sync () = False. Avec 1.7, j'ai changé cela en allow_migrate () = False. MAIS I DID N'ajoutez pas de routeur pour ma base de données locale La valeur par défaut semble être allow_migrate () = False s'il n'en existe pas. En conséquence, les migrations ont simplement échoué en silence (Référence: https://docs.djangoproject.com/fr/1.7/topics/db/multi-db/ ). J'ai ajouté un routeur pour ma base de données locale, en permettant à allow_migrate () de renvoyer la valeur True. Désormais, mes migrations créent réellement mes tables.
Cela a résolu le problème pour moi (j'utilise MySQL Workbench en passant):
SET FOREIGN_KEY_CHECKS = 0;
python manage.py migrate
SET FOREIGN_KEY_CHECKS = 1;
Remarque: avant de prendre cette mesure drastique, j’essayais de ce que Paulo Pessoa disait dans son commentaire, mais j’ai toujours le message "Aucune migration à appliquer". messages. Cependant, cela a résolu le problème.
Supprimer les tables existantes des modèles.
Supprimer le dossier de migration sous le dossier d'application.
Supprimer tous les enregistrements de migration associés dans la table
"Django_migrations".
Maintenant, vous obtenez un modèle et une base de données clairs. Utilisez makemigrations et migrateto create table.
J'espère vous aider.
Problème:: Lorsque vous appliquez migrations dans Django pour le première fois, Django crée une table de ce modèle dans la base de données et marque quelque part dans son propre fichier (classe):
`initial = True`
Lorsque vous essayez ensuite de modifier le schéma de cette table, il vérifie d’abord If initial = True
si un attribut de classe initial n’est pas trouvé, une migration sera considérée "initiale"
Au cas où le initial = True
nous devions utiliser
python manage.py migrate --fake-initial
Pour une migration initiale, Django vérifie que toutes ces tables existent déjà dans la base de données et fake-applique la migration si tel est le cas. De même, pour une migration initiale qui ajoute un ou plusieurs champs, Django vérifie que toutes les colonnes respectives existent déjà dans la base de données et fake-applique la migration si tel est le cas.
La migration initiale fictive utilise les méthodes CreateModel () et AddField ().
Solution:
>> python manage.py makemigrations <AppName>
>> python manage.py migrate --fake-initial
migration
migrate
makemigrations
migrate
Il va créer toutes les tables parfaitement