2016-02-18 17 views
7

После некоторых ошибок я удалил свою базу данных, удалил все мои файлы миграции (я оставил init .py). Теперь, когда я бегуDjango migrate: не создает таблицы

python migrate.py makemigrations // It creates migrations correctly 
python migrate.py migrate   // It outputs "app.0001_initial OK" 

Но абсолютно NOстол (связанный с моим приложением) является создано. Только те, которые связаны с джанго. И в таблице миграции моя миграция приложений отмечена, но таблица не была создана, как я уже сказал, это очень неприятно.

Вот отрывок мой миграции файла:

# -*- 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, 
     }, 
    ), 
.... 

У вас есть идея, как это исправить?

+1

Вы добавили приложение в 'settings.py'? – gtlambert

+0

Да, конечно. Когда я запускаю migrate, django сообщает мне «приложение.0001_initial OK ", который должен означать, что миграция выполнена (пока они не были выполнены, как я сказал) –

+0

И я забыл сказать, что миграция игнорирует все миграции в моем файле миграции приложения (тот, который я скопировал), но последний, который представляет собой таблицу с внешними ключами с первыми другими, поэтому mysql выводит ошибку. –

ответ

5

Из Django docs, Options.managed: «Если False, для этой модели не будут созданы операции создания или удаления таблицы базы данных».

И я вижу, у вас есть

options={ 
     'db_table': 'tblclients', 
     'managed': False, 
    }, 

Попробуйте установить managed=True в модели.

9
python manage.py migrate --fake APPNAME zero 

Это сделает вашу миграцию подделкой. Теперь вы можете запустить сценарий перенастройки

python manage.py migrate APPNAME 

Таблицы будет создана и вы решили проблему .. Ура !!!

0

сталкивается же вопрос:

python manage.py migrate poll 
Operations to perform: 
    Apply all migrations: poll 
Running migrations: 
    No migrations to apply. 

Выполните следующие шаги для создания таблиц для вашего приложения.

Перейдите в папку приложения

папки 1.delete миграции.

2.python manage.py makemigrations.

3 Переименуйте файл 0001_initial.py на номер 0001_initial_manual.py.

4 python manage.py migrate APPNAME.

После этого мои таблицы создавались плавно.

python manage.py migrate poll 
Operations to perform: 
    Apply all migrations: poll 
Running migrations: 
    Applying poll.0002_initial... OK 
0

В моем случае, что создали таблицы был такой:

python manage.py migrate --run-syncdb 

Я использую Django 1.9.6.

Смежные вопросы