2016-02-18 2 views
7

कुछ त्रुटियों के बाद, मैंने अपना डेटाबेस छोड़ दिया, मेरी सभी माइग्रेशन फ़ाइलों को हटा दिया (मैंने init .py) छोड़ा। अब, जब मैंDjango माइग्रेट: टेबल

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

लेकिन बिल्कुल नहींतालिका (मेरी ऐप्लिकेशन से संबंधित) चलाया जाता है बनाया। केवल django से संबंधित हैं। और माइग्रेशन टेबल में, मेरा एप्लिकेशन माइग्रेशन चिह्नित किया गया है लेकिन मैंने कहा है कि कोई भी टेबल नहीं बनाई गई है, यह बहुत नाराज है।

# -*- 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

हाँ यकीन है। जब मैं माइग्रेट चलाता हूं, django मुझे "ऐप बताता है।0001_initial OK "जिसका अर्थ है माइग्रेशन किया गया है (जबकि उन्होंने कहा नहीं है) –

+0

और मैं यह बताना भूल गया कि माइग्रेशन मेरे ऐप माइग्रेशन फ़ाइल (जिसकी मैंने प्रतिलिपि बनाई है) में सभी माइग्रेशन को अनदेखा कर दिया है लेकिन आखिरी एक जो एक टेबल है जिसमें पहले अन्य लोगों के साथ विदेशी कुंजी है। इसलिए mysql एक त्रुटि आउटपुट करता है। –

उत्तर

5

Django दस्तावेज़ों से, Options.managed: "यदि गलत है, तो इस मॉडल के लिए कोई डेटाबेस तालिका निर्माण या हटाना संचालन नहीं किया जाएगा।"

और मैं आपके पास

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

मॉडल में managed=True सेट करके देखें देखें।

9
python manage.py migrate --fake APPNAME zero 

यह आपके नकली को माइग्रेशन कर देगा। अब आप विस्थापित स्क्रिप्ट

python manage.py migrate APPNAME 

टेबल्स बनाया जाएगा चला सकते हैं और आप अपने समस्या हल .. चीयर्स !!!

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

अपने अनुप्रयोग के लिए टेबल बनाने के लिए इन चरणों का पालन करें:

0

मैं एक ही मुद्दे का सामना।

अपने अनुप्रयोग फ़ोल्डर

1.delete प्रवास फ़ोल्डर पर जाएं।

2.python manage.py makemigrations।

3 0001_initial.py फ़ाइल का नाम 0001_initial_manual.py पर बदलें।

4 पायथन प्रबंधन.py 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 का उपयोग कर रहा हूँ।

संबंधित मुद्दे