Сначала я создаю базу данных.
create database mydb;
Я добавляю «юг» в установленные приложения. Затем я иду к этому уроку: http://south.aeracode.org/docs/tutorial/part1.html
Учебник говорит мне сделать это:
$ py manage.py schemamigration wall --initial
>>> Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate wall
Отлично, теперь я мигрирую.
$ py manage.py migrate wall
Но это дает мне эту ошибку ...
django.db.utils.DatabaseError: (1146, "Table 'fable.south_migrationhistory' doesn't exist")
Поэтому я использую Google (который никогда не работает. Отсюда мои 870 вопросов, задаваемых по Stackoverflow), и я получаю эту страницу: http://groups.google.com/group/south-users/browse_thread/thread/d4c83f821dd2ca1c
Хорошо, поэтому я следую этим инструкциям
>> Drop database mydb;
>> Create database mydb;
$ rm -rf ./wall/migrations
$ py manage.py syncdb
Но когда я запускаю syncdb, Django создает несколько таблиц. Да, он создает таблицу south_migrationhistory, но он также создает таблицы моего приложения.
Synced:
> django.contrib.admin
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.messages
> south
> fable.notification
> pagination
> timezones
> fable.wall
> mediasync
> staticfiles
> debug_toolbar
Not synced (use migrations):
-
(use ./manage.py migrate to migrate these)
Круто .... теперь он говорит мне перенести это. Итак, я делаю это:
$ py manage.py migrate wall
The app 'wall' does not appear to use migrations.
Хорошо, так хорошо. Я добавлю стену в начальные миграции.
$ py manage.py schemamigration wall --initial
Затем я мигрирую:
$ py manage.py migrate wall
Знаете что? Это дает мне это BS:
_mysql_exceptions.OperationalError: (1050, "Table 'wall_content' already exists")
Извините, это действительно меня бесит. Может кто-нибудь помочь? спасибо.
Как заставить Юг работать и правильно синхронизироваться со всем? Единственное, о чем я могу думать, это удалить мое приложение из INSTALLED_APPS, затем запустить syncdb, а затем снова добавить его.
Это так глупо.