2015-10-12 5 views
10
yekabathula-macbookair2:roster yekabathula$ python manage.py migrate 
Operations to perform: 
    Synchronize unmigrated apps: staticfiles, messages 
    Apply all migrations: admin, contenttypes, api, auth, sessions 
Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    Rendering model states... DONE 
    Applying contenttypes.0001_initial... OK 
    Applying auth.0001_initial... OK 
    Applying admin.0001_initial... OK 
    Applying api.0001_initial... OK 
    Applying contenttypes.0002_remove_content_type_name... OK 
    Applying auth.0002_alter_permission_name_max_length... OK 
    Applying auth.0003_alter_user_email_max_length... OK 
    Applying auth.0004_alter_user_username_opts... OK 
    Applying auth.0005_alter_user_last_login_null... OK 
    Applying auth.0006_require_contenttypes_0002... OK 
    Applying sessions.0001_initial... OK 
yekabathula-macbookair2:roster yekabathula$ python manage.py syncdb 
/Library/Python/2.7/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9 
    warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning) 

Operations to perform: 
    Synchronize unmigrated apps: staticfiles, messages 
    Apply all migrations: admin, contenttypes, api, auth, sessions 
Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    No migrations to apply. 

После выполнения питона manage.py мигрировать, таблицы не создаются в базе данных из моего models.py он может создавать другие таблицы из django_session и т.д. Есть ли что-нибудь еще, что мне нужно следовать здесь?Django 1.8 мигрирует не создает таблицы

+0

Вы делали 'makemigrations' перед выполнением' migrate'? – karthikr

+1

Да, я сделал. с помощью 'makemigrations' он может разбивать файл миграции. Но когда я «мигрирую», он не создает таблицы. – YSK

+0

Если вы обновляете, убедитесь, что вы удалили все старые файлы миграции юга из каталога миграции. – karthikr

ответ

2

У меня была аналогичная проблема и просто вычислил ее. У меня есть несколько баз данных. Мой локальный (тот, который не обновляется) - это база данных MySQL. Другие - MS SQL Server и MySQL. У меня есть маршрутизаторы для других баз данных, так как я их не управляю, и (в Django 1.6) использовал маршрутизаторы для указания allow_sync() = False. С 1.7 я изменил это, чтобы allow_migrate() = False. НО Я НЕ ДОБАВЛЯЛ МАРШРУТ ДЛЯ МОЙ ЛОКАЛЬНОЙ БАЗА ДАННЫХ. По умолчанию используется allow_migrate() = False, если его нет. В результате миграция просто провалилась молча (ссылка: https://docs.djangoproject.com/en/1.7/topics/db/multi-db/). Я добавил маршрутизатор для своей локальной БД, установив allow_migrate(), чтобы вернуть True, и теперь мои миграции фактически создают мои таблицы.

0

Это решило проблему для меня (я использую MySQL Workbench, кстати):

  • Выполнить этот SQL: SET FOREIGN_KEY_CHECKS = 0;
  • Выберите все таблицы в вашей Джанго базы данных (нажмите на первый таблицу, затем нажмите и удерживайте shift, затем нажмите на последнюю таблицу). Затем щелкните правой кнопкой мыши и выберите «Drop п таблицы» (где п число таблиц вы только выбранных)
  • затем запустить python manage.py migrate
  • Наконец восстановить основные параметры иностранных проверки, выполнив SQL: SET FOREIGN_KEY_CHECKS = 1;

Примечание : Прежде чем принять эту решительную меру, я пробовал то, что Paulo Pessoa сказал в своем комментарии, но все же я получил «Никаких миграций, чтобы подать заявку». Сообщения. Однако это решило проблему.

+0

Упорядочить пояснение, пожалуйста? –

45

Я столкнулся с аналогичной проблемой в Django 1.10, и ни один из вышеперечисленных решений не работал для меня.

Что в конечном счете работал бегал эту команду:

python manage.py migrate --fake myappname zero 

Этого сброс все миграции (в нулевом состоянии)

Это следует:

python manage.py migrate myappname 

создал таблицы для меня.

Если вы не хотите, чтобы вернуться к исходному (нулевому) состоянию, но говорят миграции числа 0005 (последнюю миграция, которая работала), вы можете вместо этого:

python manage.py migrate --fake myappname 0005 

А затем продолжить с фактической мигрируют:

python manage.py migrate myappname 

Подробнее в docs

+0

Спасибо, я просто столкнулся с такой же проблемой и решил с вашей техникой – mmrs151

+0

Perfect! Это спасло мою задницу. – Volatil3

+1

Ничего себе, работая в 1.8.4! – Clocker

1
  • Удалить существующие таблицы моделей.

  • Удалить папку миграции в папке приложения.

  • Удалить все связанные записи миграции в таблице
    «django_migrations».

  • Теперь вы получаете четкую модель и базу данных. Используйте makemigrations и мигрируйте , чтобы создать таблицу.

Надеюсь помочь вам.

+0

Пожалуйста, возьмите [tour] (https://stackoverflow.com/tour) и прочитайте [как tos] (https://stackoverflow.com/help), чтобы узнать, как Значительный вклад и писать хорошие ответы. – creimers

+0

Его ответ обычно работает. –

1

Я столкнулся с той же проблемой. После многих рыть я нашел решение. Я использовал django 1.11.

Если вы хотите начать-над

1)delete all the files in your migrations folder except __init__.py 
2)drop database 
3)create database 
4)python makemigrations 
5)python migrate 

если вы reset_db вы можете использовать вместо 2-го и 3-го этапов.

питон manage.py reset_db

+0

Если есть много приложений, только одно приложение находится в затруднительном положении, drop database не является хорошим методом. – aircraft

+0

Да! В моем случае у меня было только одно приложение и я хотел начать. –

0

В моем случае файл __init__.py отсутствует в/кочевок/папки APP. Если у вас его нет, все, что ему нужно, это пустой файл __init__.py.

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