Django migriert : nicht Tabellen erstellen
Nachdem einige Fehler, ich ließ meine Datenbank gelöscht, alle meine migration-Dateien (habe ich init.py).
Nun, wenn ich
python migrate.py makemigrations //It creates migrations correctly
python migrate.py migrate //It outputs "app.0001_initial OK"
Aber absolut KEINE Tabelle (im Zusammenhang mit meiner app) ist erstellt. Nur diejenigen, die mit django sind.
Und in der migration-Tabelle, meine migration der Anwendung markiert ist, erfolgt aber keine Tabelle erstellt worden, als ich sagte, es ist sehr unangenehm.
Hier ist ein Auszug meine Migrations-Datei :
# -*- 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,
},
),
....
Hast du eine Idee wie es zu lösen ist ?
- Haben Sie die app in
settings.py
? - Ja sicher. Wenn ich migrieren, django sagt mir " - app.0001_initial OK", das soll bedeuten, dass die migration durchgeführt wurden (während Sie nicht getan, als ich sagte)
- Und ich habe vergessen zu sagen, dass die migration ignoriert alle Migrationen in meinem app-migration-Datei (die, die ich kopiert habe), aber das Letzte das ist eine Tabelle, die Fremdschlüssel hat mit der ersten anderen. Also mysql-Ausgänge ein Fehler.
- versuchen
python manage.py makemigrations <appname_thats_missing_tables>
undpython manage.py migrate <appname_thats_missing_tables>
- Ah, du hast Recht. Wie habe ich nicht sehen ! Danke.
- du hast Recht. Meine Probleme gelöst, vielen Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Von Django-docs,
- Optionen.managed
: "Wenn False, werden keine Datenbank-Tabelle erstellen oder löschen von Operationen durchgeführt werden, für dieses Modell."Und ich sehe, haben Sie
Versuchen Sie
managed=True
im Modell.Damit wird Ihre migration zu fälschen.
Jetzt können Sie das Migration-Skript
Tabellen erstellt
und du dein problem gelöst.. Cheers!!!
In meinem Fall, was erstellt der Tabellen war diese:
Bin ich mit Django 1.9.6.
Ich vor demselben Problem:
Befolgen Sie diese Schritte zum erstellen von Tabellen für Ihre app.
Nachdem diese meine Tabellen erstellt reibungslos.
<app_name>_<model_name>
und Einschränkungen generiert wurden, die von Django.Überprüfen Sie bitte, wenn Sie mehrere Datenbanken in Ihrem Projekt. Wenn Sie mehrere Datenbanken konfiguriert haben, überprüfen Sie die Standard-Datenbank ist die eine, die Sie suchen.
Wenn Standard-und Ihre erwartete Datenbank sind anders, Sie unter-Befehl, der auf Ihre db-Konfiguration.
python manage.py migrieren von $app_name --Datenbank $dbname_from_setting
Hoffe, das hilft.
Dies ist, wie ich @JulienD Antwort zu arbeiten:
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
Danach
python manage.py showmigrations
zeigt die Migrationen und die admin-site zu arbeiten begonnen.Die Antwort auf diese hängt davon ab, ob Sie bereits eine Geschichte der Migrationen in deinem app-Ordner. In meinem Fall habe ich nicht...ich glaube, ich gelöscht, original-migration-Skripte.
Also nach dem Django-docs, ich habe die folgenden:
Führen Sie die Schritte in Abschnitt Workflow ...
Ordner löschen Migrationen und re-run. Es funktioniert für mich