Юг и Джанго-Аллах: как мне синхронизировать все таблицы?

Я пытаюсь использовать django-allauth для аутентификации пользователя. У меня не работает логин FB. Я пытаюсь устранить неполадки и задаюсь вопросом, так ли это, потому что таблицы "Аллаута" не синхронизированы.

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

(app01)MoriartyMacBookAir13:getstartapp macuser$ python manage.py syncdb
Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.messages
 > django.contrib.staticfiles
 > storages
 > evernote
 > discover
 > hello
 > south
 > django.contrib.sites
 > djrill

Not synced (use migrations):
 - polls
 - allauth
 - allauth.account
 - allauth.socialaccount
 - allauth.socialaccount.providers.facebook
(use ./manage.py migrate to migrate these)
(app01)MoriartyMacBookAir13:getstartapp macuser$ python manage.py migrate allauth 
Running migrations for allauth:
- Nothing to migrate.
 - Loading initial data for allauth.
Installed 0 object(s) from 0 fixture(s)
(app01)MoriartyMacBookAir13:getstartapp macuser$ python manage.py migrate allauth.account
? You have no migrations for the 'account' app. You might want some.
(app01)MoriartyMacBookAir13:getstartapp macuser$ python manage.py schemamigration  allauth.account --auto
You cannot use --auto on an app with no migrations. Try --initial.
(app01)MoriartyMacBookAir13:getstartapp macuser$ python manage.py schemamigration  allauth.account --initial
 + Added model account.EmailAddress
 + Added model account.EmailConfirmation
Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate account
(app01)MoriartyMacBookAir13:getstartapp macuser$ python manage.py migrate allauth.account
Running migrations for account:
 - Migrating forwards to 0001_initial.
 > account:0001_initial
FATAL ERROR - The following SQL query failed: CREATE TABLE "account_emailaddress" ("id" serial NOT NULL PRIMARY KEY, "user_id" integer NOT NULL, "email" varchar(75) NOT NULL UNIQUE, "verified" boolean NOT NULL, "primary" boolean NOT NULL)
The error was: relation "account_emailaddress" already exists

Так что в этом мое замешательство... почему он пытается СОЗДАТЬ ТАБЛИЦУ, если он уже существует?

Основываясь на другом потоке, здесь pip freeze в случае полезного:

(app01)MoriartyMacBookAir13:getstartapp macuser$ pip freeze
Django==1.6.5
Pillow==2.6.1
South==1.0
boto==2.32.1
dj-database-url==0.3.0
dj-static==0.0.6
django-allauth==0.18.0
django-audiotracks==0.2.4
django-storages==1.1.8
django-toolbelt==0.0.1
djrill==1.2.0
docopt==0.4.0
evernote==1.25.0
gunicorn==19.0.0
httplib2==0.9
mandrill==1.0.56
mutagen==1.22
oauth2==1.5.211
oauthlib==0.6.3
psycopg2==2.5.3
pydub==0.9.2
python-openid==2.2.5
requests==2.3.0
requests-oauthlib==0.4.1
static3==0.5.1
whitenoise==1.0.3
wsgiref==0.1.2
youtube-dl==2014.09.25

И чтобы подтвердить, несмотря на вышеуказанный цикл, я вернулся к тому, с чего начал:

(app01)MoriartyMacBookAir13:getstartapp macuser$ python manage.py syncdb
Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.messages
 > django.contrib.staticfiles
 > storages
 > evernote
 > discover
 > hello
 > south
 > django.contrib.sites
 > djrill

Not synced (use migrations):
 - polls
 - allauth
 - allauth.account
 - allauth.socialaccount
 - allauth.socialaccount.providers.facebook
(use ./manage.py migrate to migrate these)

Как я могу получить все таблицы для "синхронизации"?

1 ответ

Решение

Это нормально. Таблицы, которыми вы управляете с помощью South, не нужно синхронизировать при выполнении syncdb,

Вы должны управлять этими таблицами с юга (в основном с schemamigration обнаружить изменения в моделях и создать файл миграции, а затем с помощью migrate применить эти изменения к БД. Рекомендую прочитать урок юга;)

И, наконец, если вы хотите синхронизировать и перенести в одну строку, вы можете сделать это так:

python manage.py syncdb --migrate
Другие вопросы по тегам