2015-11-09 1 views
1

У меня возникла странная проблема. Я создаю простую таблицу. Первоначальная миграция 0001 выглядит следующим образом:Django 1.8.5 Миграции не переносятся в базу Postgres вообще

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.db import migrations, models 


class Migration(migrations.Migration): 

    dependencies = [ 
    ] 

    operations = [ 
     migrations.CreateModel(
      name='Customer', 
      fields=[ 
       ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 
       ('company_name', models.CharField(default=b'', unique=True, max_length=100)), 
       ('address1', models.CharField(default=b'', max_length=200)), 
       ('address2', models.CharField(default=b'', max_length=200, blank=True)), 
       ('city', models.CharField(default=b'', max_length=200)), 
       ('state', models.CharField(default=b'', max_length=100)), 
       ('pincode', models.IntegerField(default=b'')), 
       ('landline', models.CharField(default=b'', max_length=15, blank=True)), 
       ('email', models.EmailField(default=b'', max_length=254, blank=True)), 
       ('website', models.CharField(default=b'', max_length=100, blank=True)), 
       ('contact1_first_name', models.CharField(default=b'', max_length=100)), 
       ('contact1_last_name', models.CharField(default=b'', max_length=100)), 
       ('contact1_mobile', models.CharField(default=b'', max_length=15, blank=True)), 
       ('contact1_email', models.EmailField(default=b'', max_length=254, blank=True)), 
       ('contact2_first_name', models.CharField(default=b'', max_length=100, blank=True)), 
       ('contact2_last_name', models.CharField(default=b'', max_length=100, blank=True)), 
       ('contact2_mobile', models.CharField(default=b'', max_length=15, blank=True)), 
       ('contact2_email', models.EmailField(default=b'', max_length=254, blank=True)), 
      ], 
     ), 
    ] 

Я сделал makemigrations, я сделал мигрировать, я сделал SyncDB. У меня нет ошибок, и в postgres sql нет таблицы. Мне пришлось сделать таблицу вручную, выполнив sqlmigrate и разместив код в PGADMIN3. Это сделал трюк и создал таблицу.

Однако весь смысл использования Django заключается в том, что изменения в Модели должны быть перенесены в базу данных, и мне не нужно менять модель и базу данных отдельно, вручную.

Я искал в Интернете, и я не вижу, чтобы кто-то еще имел аналогичную проблему. Это очень простая проблема, ошибок и изменений в базе данных нет. В чем проблема?

+1

Сначала вам нужно вручную создать базу данных, тогда вы должны выполнить миграцию, тогда будут созданы только таблицы. –

+0

Вы пробовали 'python manage.py мигрировать нуль? И после этого выполнить миграцию еще раз? – Nhor

+0

Моя база данных уже создана. Я попробую рекомендацию Nhor с нулевым добавлением после команды migrate. Я вернусь с результатом этой команды. Это может быть проблема с разрешениями или проблема с sql-сервером postgres? Странно, что я не получаю ошибок, и никаких изменений в базе данных не происходит. – Arjuna

ответ

1

Когда вещи не работают с моделью, и вы хотите, чтобы начать с нуля, то, что работал со мной был

  1. Внести изменения в модель, чтобы получить это только право.
  2. Удалить все миграции, удалив папку Миграции в приложении
  3. В виде базы данных для таблицы кочевок (я использовал pgadmin3 как передний конец для Postgres SQL) и удалите строки, в которых упоминаются ваше имя приложения
  4. Запуск makemigrations APPNAME, мигрировать и SyncDB

и у вас есть свежая база точно соответствующая модели, минус все отбросы с миграциями и все маленькие изменения, сделанные вами по пути, что вы можете не нужно отслеживать.

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