Найти - Пользователи
Полная версия: Проблема с South + Django / Python 1.5.3
Начало » Django » Проблема с South + Django / Python 1.5.3
1
Unick
Добрый вечер!
Пытаюсь изучать Python + Django с помощью видео уроков. И сталкнулся с такой проблемой как миграция south. На этапе когда помечаю инициализацию fake, вылетает список ошибок.
Ниже описаны все действия. Пользовался гуглом, то что пишут на англоязычных форумах удалить папку и выполнить миграцию с различными ключами не помагает, возможно я что то не допонял. Подскажи с чем конкретно связан спиок ошибок?
setting.py
INSTALLED_APPS = (
    'pizza',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'south',
    'django_extensions',
)
Console
(pizza)ad@ad-VirtualBox:~/workspace/pizza$ python manage.py syncdb
Syncing...
Synced:
 > pizza
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.messages
 > django.contrib.staticfiles
 > south
Not synced (use migrations):
 - django_extensions
(use ./manage.py migrate to migrate these)
Далее выполняю python manage.py schemamigration pizza initial –initial
(pizza)ad@ad-VirtualBox:~/workspace/pizza$ python manage.py schemamigration pizza initial --initial
Creating migrations directory at '/home/ad/workspace/pizza/pizza/migrations'...
Creating __init__.py in '/home/ad/workspace/pizza/pizza/migrations'...
/home/ad/.virtualenvs/pizza/local/lib/python2.7/site-packages/south/utils/__init__.py:38: DeprecationWarning: Options.module_name has been deprecated in favor of model_name
  value = getattr(value, part)
 + Added model pizza.Pizza
 + Added M2M table for components on pizza.Pizza
 + Added model pizza.Component
Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate pizza

Снова выполняю синхронизацию

(pizza)ad@ad-VirtualBox:~/workspace/pizza$ python manage.py syncdb
Syncing...
Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.messages
 > django.contrib.staticfiles
 > south
Not synced (use migrations):
 - pizza
 - django_extensions
(use ./manage.py migrate to migrate these)
Как я понял Not synced гласит, что данные приложения не нуждаются в синхронизации.
Теперь мне надо указать, что созданныя при миграции 0001_initial.py это fake.
Выполняю python manage.py migrate pizza 0001 –fake и тут вылетает непонятно что (
(pizza)ad@ad-VirtualBox:~/workspace/pizza$ python manage.py migrate pizza 0001 --fake
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/ad/workspace/django/django/core/management/__init__.py", line 397, in execute_from_command_line
    utility.execute()
  File "/home/ad/workspace/django/django/core/management/__init__.py", line 390, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/ad/workspace/django/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/ad/workspace/django/django/core/management/base.py", line 289, in execute
    output = self.handle(*args, **options)
  File "/home/ad/.virtualenvs/pizza/local/lib/python2.7/site-packages/south/management/commands/migrate.py", line 111, in handle
    ignore_ghosts = ignore_ghosts,
  File "/home/ad/.virtualenvs/pizza/local/lib/python2.7/site-packages/south/migration/__init__.py", line 200, in migrate_app
    applied_all = check_migration_histories(applied_all, delete_ghosts, ignore_ghosts)
  File "/home/ad/.virtualenvs/pizza/local/lib/python2.7/site-packages/south/migration/__init__.py", line 79, in check_migration_histories
    for h in histories:
  File "/home/ad/workspace/django/django/db/models/query.py", line 139, in __iter__
    self._fetch_all()
  File "/home/ad/workspace/django/django/db/models/query.py", line 971, in _fetch_all
    self._result_cache = list(self.iterator())
  File "/home/ad/workspace/django/django/db/models/query.py", line 263, in iterator
    for row in compiler.results_iter():
  File "/home/ad/workspace/django/django/db/models/sql/compiler.py", line 687, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/home/ad/workspace/django/django/db/models/sql/compiler.py", line 763, in execute_sql
    cursor.execute(sql, params)
  File "/home/ad/workspace/django/django/db/backends/util.py", line 46, in execute
    return self.cursor.execute(sql, params)
  File "/home/ad/workspace/django/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/ad/workspace/django/django/db/backends/util.py", line 46, in execute
    return self.cursor.execute(sql, params)
  File "/home/ad/workspace/django/django/db/backends/sqlite3/base.py", line 476, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: south_migrationhistory
Последнее я понял, что нет в базе pizza таблицы south_migrationhistory (OperationalError: no such table: south_migrationhistory), так как если вручную создать таблицу south_migrationhistory будет рагуть на поля (column)
lorien
Разбирайтесь почему на этапе syncdb не создаются таблицы для приложения south, миграции можно не создавать, проблему легко проверять просто смотря в базу и наблюдая создалась ли таблица south_migrationhistory или нет.
nnmware
Щас кстати Эндрю Гудвин запилил в current уже нативно миграции из лучшего кода south'а.
Только незнаю у кого как, у меня есть проблемка при новой makemigrations. Ошибка RegexValidator вываливается, а тяму понять в чем проблема пока не хватает.
daniel
Здравствуйте!

Выполните сперва

python manage.py syncdb –all

, чтобы создать все необходимые таблицы. В том числе необходимые самому south.

Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB