Невозможно создать таблицы для django-social-auth на движке приложения Google(GAE)
Я потратил много времени на решение этой проблемы, но не смог добиться успеха. Тем не менее я застрял здесь.
Поскольку я развернул проект django в GAE(Google App Engine), используя django-deployer, и я внедряю django-social-auth в свой проект django. Вот проблема в деталях
localhost:8000 -
home/dev/djangoTaxi# python manage.py syncdb
Syncing...
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table south_migrationhistory
Creating table scheduler_client
Creating table scheduler_clientevaluation
Creating table scheduler_car
Creating table scheduler_taxi
Creating table scheduler_taxievaluation
Creating table scheduler_ride
Creating table scheduler_rideevaluation
Creating table registration_registrationprofile
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): db_admin
Email address: myemail@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
Synced:
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.messages
> django.contrib.staticfiles
> django.contrib.admin
> south
> scheduler
> registration
Not synced (use migrations):
- social_auth
(use ./manage.py migrate to migrate these)
Когда я бегу migrate
команда, я получаю это:
home/dev/djangoTaxi# python manage.py migrate
Running migrations for social_auth:
- Migrating forwards to 0002_auto__add_unique_nonce_timestamp_salt_server_url__add_unique_associati.
> social_auth:0001_initial
> social_auth:0002_auto__add_unique_nonce_timestamp_salt_server_url__add_unique_associati
- Loading initial data for social_auth.
Installed 0 object(s) from 0 fixture(s)
И вот таблицы базы данных, перечисленные в MySQL:
mysql> show tables;
+----------------------------------+
| Tables_in_db_taxi |
+----------------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_session |
| django_site |
| registration_registrationprofile |
| scheduler_car |
| scheduler_client |
| scheduler_clientevaluation |
| scheduler_ride |
| scheduler_rideevaluation |
| scheduler_taxi |
| scheduler_taxievaluation |
| social_auth_association |
| social_auth_nonce |
| social_auth_usersocialauth |
| south_migrationhistory |
+----------------------------------+
22 rows in set (0.00 sec)
Так как эта команда переноса создает необходимые таблицы по social_auth. И это работает нормально на локальном сервере.
GAE: Но эти таблицы социальных аутентификаций не заполняются в Google Cloud SQL. Google Cloud SQL (GAE) с использованием команд django-deployer.
/djangoTaxi# sh manage.sh cloudsyncdb
Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Instlled 0 object(s) from 0 fixture(s)
Synced:
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.messages
> django.contrib.staticfiles
> django.contrib.admin
> south
> scheduler
> rocket_engine
> registration
Not synced (use migrations):
- social_auth
(use ./manage.py migrate to migrate these)
Чтобы решить эту проблему, я попробовал следующее:
hom/dev/djangoTaxi# sh manage.sh migrate
Running migrations for social_auth:
- Nothing to migrate.
- Loading initial data for social_auth.
Installed 0 object(s) from 0 fixture(s)
и тогда он не заполняет таблицы social_auth на GAE. Следовательно, я получаю эту ошибку неоднократно.
DatabaseError at /complete/google-oauth2/
(1146L, u"Table 'db_DjangoTaxi.social_auth_usersocialauth' doesn't exist")
Может кто-нибудь помочь мне решить эту проблему, чтобы social_auth отлично работал на движке приложения Google.
Спасибо,
2 ответа
Я получил происхождение этой проблемы и решил ее успешно.
Проблема в том, что мы не смогли запустить команду переноса в GAE, даже если мы сделали это
hom/dev/djangoTaxi# sh manage.sh migrate
Но это работает локально и, следовательно, не влияет на GAE.
Решение:
Чтобы преодолеть эту проблему, просто откройте файл manage.sh. Он имеет некоторую реализацию команд, которые работают на GAE, такие как cloudcreatedb, cloudsyncdb и deploy. Следовательно, нет никаких других команд, таких как migrate и т. Д., Кроме трех вышеупомянутых.
Поэтому я создаю пользовательскую команду в manage.sh с именем cloudmigratedb, добавив эти строки после cloudsyncdb.
cloudmigratedb)
export SETTINGS_MODE=prod && manage_script migrate --all
;;
Как это называется *manage_script* метод с аргументами migrate --all Вот так: manage_script *:
manage_script () {
env/bin/python $MANAGE_PY/manage.py $@ --settings=$DJANGO_SETTINGS_MODULE
}
Эта команда такая же, как cloudsyncdb отличается только аргументами. Следовательно, мы запускаем команду как
hom/dev/djangoTaxi# sh manage.sh cloudmigratedb
И это, наконец, запустить миграцию на GAE. Я получил все таблицы на social_auth на GAE.
Счастливого окончания...:D
Попробуйте этот приятель:
manage.py schemamigration social_auth --auto
Затем:
manage.py migrate social_auth
См. Документацию ( http://south.readthedocs.org/en/latest/tutorial/part1.html), особенно в разделе "Изменение модели".
Надеюсь, это работает:)