Проблемы с установкой South с Django (таблицы south_migrationhistory не создаются)

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

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

  1. Скачал юг 0.7.3
  2. Разархивировал, запустил setup.py develop (как написано в турориале)
  3. #P3# <блочная цитата> #P4#
  4. I do

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.


person StanM    schedule 09.03.2012    source источник
comment
Насколько я понимаю, вы пытались запустить ./manage.py migrate и получили ошибку «Нет такой таблицы»?   -  person Marius Grigaitis    schedule 09.03.2012


Ответы (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 

для поддельных миграций.

person Marius Grigaitis    schedule 09.03.2012
comment
Потрясающий. --все решилось, спасибо!. Я использовал установку python setup.py для установки юга. Это, казалось, установило его, но почему-то просто не создавало нужные таблицы. - person StanM; 12.03.2012
comment
4 часа рыскал за этим - и все. Бесконечно благодарен. django.contrib.admin не подхватывался python manage.py syncdb. Он продолжал говорить мне запустить миграцию. Запуск миграции говорит об отсутствии новых изменений. Так я остался без админ столов. -- все пошло вперед и создало if для меня. Все хорошо, что хорошо кончается! - person harisibrahimkv; 07.01.2014

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

  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 не находит место, где оно хочет хранить миграции схемы.

person patrickn    schedule 09.03.2012
comment
Если вы добавляете South в существующее приложение, вам нужно выполнить ./manage.py convert_to_south yourappname, что имитирует вашу первую миграцию. Обратите внимание на эту цитату из документации South по команде convert_to_south: - person patrickn; 09.03.2012
comment
Команда convert_to_south полностью работает только на первой машине, на которой вы ее запускаете. После того, как вы зафиксировали первоначальные миграции, сделанные в вашей системе контроля версий, вам нужно будет запустить ./manage.py migrate myapp 0001 --fake на каждой машине, имеющей копию кодовой базы (убедитесь, что они обновлены). сначала укажите дату с моделями и схемой). - person patrickn; 09.03.2012
comment
Спасибо за подробный отзыв. Я запустил syncdb на шаге 4 (шаг 3 был чисто дополнительной двойной проверкой, чтобы убедиться, что юг находится в правильной папке, потому что на моем компьютере установлено 2 установки Python. - person StanM; 12.03.2012

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

Обнаружен:

~ $ # 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
person Doug    schedule 22.05.2014