Юг и Джанго-Аллах: как мне синхронизировать все таблицы?
Я пытаюсь использовать 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