Проблемы с установкой юга с помощью Django (таблицы south_migrationhistory не создаются) - PullRequest
5 голосов
/ 09 марта 2012

Я не могу заставить это работать.

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

  1. Загружен на юг 0.7.3
  2. Разархивирован, запустил файл setup.py development (как сказано в турориале)
  3. Дважды проверил, нет лиюг - это то место, где он должен быть, перейдя к интерпретатору python и выполнив (без ошибок)

    импорт юг

  4. я делаю

C:\Users\j\iMiCode\imi_admin>python ./manage.py syncdb

Синхронизация ... Приборы не найдены.

Synced:
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.sites
 > django.contrib.messages
 > django.contrib.admin

Not synced (use migrations): 
 - south (use ./manage.py migrate to migrate these)

- Насколько я понимаю, юг должен был быть синхронизирован правильно?Все, что я делаю после этого, жалуется, что в базе данных нет таблиц south_migrationhistory.

PS.Я работаю с Django 1.2.7, python 2.6, на Windows7

Ответы [ 3 ]

17 голосов
/ 09 марта 2012

Мне кажется, что это ошибка на юге.

Также это может быть вызвано неправильными действиями, такими как: запуск schemamigration --auto south и т. Д. Я бы предложил установить его, запустив python setup.py install или через easy_install или pip

Документация South гласит: «После добавления South вам нужно будет запустить ./manage.py syncdb, чтобы создать таблицы отслеживания миграции South (по разным причинам South не использует миграции для своих собственных моделей) . "

Но ваш вывод говорит о том, что юг пропустил создание таблиц для своих собственных моделей, потому что он думал, что южное приложение использует миграции

В качестве обходного пути вы можете использовать

python manage.py syncdb --all

Что приводит к синхронизации всех таблиц независимо от миграций и

python manage.py migrate --fake 

на фальшивые миграции.

0 голосов
/ 23 мая 2014

Я столкнулся с этой же проблемой. Оказывается, с помощью магии, я создал миграцию внутри приложения hte south.

Открыт:

~ $ # cd to python library
~ $ cd `python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"`
python2.7/site-packages $ cd south
python2.7/site-packages/south $ ls migrations
   0001_initial.py  0002_initial.py 0003_initial.py __init__.py

Это плохо, их там быть не должно, и это то, что заставляет юг пропустить себя. Удалил все вещи на юг, переустановил, затем снова заработал syncdb.

python2.7/site-packages $ rm -rf south* South*
~ $ pip install south
0 голосов
/ 09 марта 2012

Для нового приложения без существующих таблиц шаги для добавления юга следующие:

  1. добавить 'юг' в список INSTALLED_APPS.

  2. убедитесь, что приложение, которое нужно перенести, также находится в INSTALLED_APPS.

  3. запустите ./manage.py syncdb (или python manage.py syncdb из каталога вашего проекта),Это добавит таблицы миграции в базу данных.

  4. из командной строки выполните ./manage.py schemamigration yourappname --initial

  5. run./manage.py migrate yourappname

Судя по сообщаемой вами ошибке, похоже, что после шагов 1 и 2 вы забыли запустить syncdb для создания таблиц миграции, а Югприложение не находит место, где оно хочет хранить миграции схемы.

...