Кажется, я не могу заставить это работать.

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

  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

5
StanM 9 Мар 2012 в 04:00

3 ответа

Лучший ответ

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

Также это может быть вызвано неправильными действиями, такими как: запуск 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 

Фальсифицировать миграции.

17
Marius Grigaitis 9 Мар 2012 в 00:26

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

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

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

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

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

  5. запустить ./manage.py перенести имя пользователя

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

0
patrickn 9 Мар 2012 в 14:30

Я столкнулся с этой же проблемой. Оказывается, каким-то волшебством я создал миграции внутри приложения 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
Doug 22 Май 2014 в 20:50