Après quelques erreurs, j'ai lâché ma base de données, supprimé tous mes fichiers de migration (j'ai laisséinit .py) . Maintenant, quand je lance
python migrate.py makemigrations // It creates migrations correctly
python migrate.py migrate // It outputs "app.0001_initial OK"
Mais absolumentNO table (liée à mon application) est créée . Seuls ceux liés à Django sont . Et dans la table de migration, la migration de mes applications est marquée est terminée mais aucune table n'a été créée comme je l'ai dit, c'est très déplaisant.
Voici un extrait de mon fichier de migration:
# -*- coding: utf-8 -*-
# Generated by Django 1.9 on 2016-02-18 21:59
from __future__ import unicode_literals
import colorful.fields
import Django.core.validators
from Django.db import migrations, models
import Django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Client',
fields=[
('id', models.AutoField(db_column='idtblclients', primary_key=True, serialize=False)),
('genre1', models.CharField(blank=True, max_length=10)),
('prenom1', models.CharField(blank=True, max_length=45)),
('nom1', models.CharField(blank=True, max_length=45)),
('genre2', models.CharField(blank=True, max_length=10)),
('prenom2', models.CharField(blank=True, max_length=45)),
('nom2', models.CharField(blank=True, max_length=45)),
('courriel', models.CharField(blank=True, max_length=45)),
('langue', models.CharField(blank=True, max_length=1)),
('numtel1', models.CharField(blank=True, db_column='NumTel1', max_length=20)),
('numtel2', models.CharField(blank=True, db_column='NumTel2', max_length=20)),
('numcivique', models.CharField(blank=True, db_column='NumCivique', max_length=15)),
('rue', models.CharField(blank=True, db_column='Rue', max_length=45)),
('ville', models.CharField(blank=True, db_column='Ville', max_length=45)),
('codepostal', models.CharField(blank=True, db_column='CodePostal', max_length=45)),
('timestamp', models.DateTimeField(blank=True, db_column='Timestamp', null=True)),
('zone', models.CharField(blank=True, db_column='Zone', max_length=45)),
],
options={
'db_table': 'tblclients',
'managed': False,
},
),
....
Avez-vous une idée comment résoudre ce problème?
Dans Django docs, Options.managed
: "Si la valeur est False, aucune opération de création ou de suppression de table de base de données ne sera effectuée pour ce modèle."
Et je vois que tu as
options={
'db_table': 'tblclients',
'managed': False,
},
Essayez de définir managed=True
dans le modèle.
python manage.py migrate --fake APPNAME zero
Cela rendra votre migration fausse . Maintenant, vous pouvez exécuter le script migrate
python manage.py migrate APPNAME
Des tables seront créées Et vous aurez résolu votre problème.
Dans mon cas, ce qui a créé les tables était ceci:
python manage.py migrate --run-syncdb
J'utilise Django 1.9.6.
Veuillez vérifier si vous utilisez plusieurs bases de données dans votre projet. Si plusieurs bases de données sont configurées, vérifiez que la base de données par défaut est celle que vous recherchez.
Si default et la base de données attendue sont différents, exécutez la commande ci-dessous en indiquant votre configuration de base de données.
python manage.py migrate $ nom_app --database $ nom_base_de_fichier
J'espère que cela t'aides.
Je suis confronté au même problème:
python manage.py migrate poll
Operations to perform:
Apply all migrations: poll
Running migrations:
No migrations to apply.
Suivez ces étapes pour créer des tableaux pour votre application.
Allez dans le dossier de votre application
Dossier de migration 1.delete.
2.python manage.py makemigrations.
3 Renommez le fichier 0001_initial.py en 0001_initial_manual.py.
4 python manage.py migrer APPNAME.
Après cela, mes tables ont été créées en douceur.
python manage.py migrate poll
Operations to perform:
Apply all migrations: poll
Running migrations:
Applying poll.0002_initial... OK
Voici comment j'ai obtenu la réponse de @JulDD:
class thing(models.Model):
name = models.CharField(max_length=200)
class Meta:
app_label = 'things'
managed = True
python manage.py makemigrations
python manage.py migrate
Après cela, python manage.py showmigrations
affiche les migrations et le site d'administration a commencé à fonctionner.