我花了很多时间来解决这个问题,但无法成功。我仍然被困在这里。
我使用django-deployer在GAE(Google App Engine)上部署了一个django项目,我正在我的django项目中实现django-social-auth。这是详细的问题
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)
由于此migrate命令通过social_auth创建所需的表。它在本地服务器上运行良好。
GAE: 但是这些社交认证表并没有填充在Google Cloud SQL上。这是详细信息。 使用django-deployer命令的Google Cloud SQL(GAE)。
/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)
然后它不会在GAE上填充social_auth表。因此我反复得到这个错误。
DatabaseError at /complete/google-oauth2/
(1146L, u"Table 'db_DjangoTaxi.social_auth_usersocialauth' doesn't exist")
任何人都可以帮我解决此问题,以便在Google应用引擎上正常运行social_auth。
谢谢,
答案 0 :(得分:2)
试试这个好友:
manage.py schemamigration social_auth --auto
然后:
manage.py migrate social_auth
请参阅文档(http://south.readthedocs.org/en/latest/tutorial/part1.html#tutorial-part-1),尤其是“更改模型”部分
希望它有效:)
答案 1 :(得分:0)
我得到了这个问题的根源并成功解决了它。
<强>问题:强> 是我们无法在GAE上运行migrate命令,即使我们这样做了
hom/dev/djangoTaxi# sh manage.sh migrate
但这是在本地运行,因此对GAE没有影响。
<强>解决方案:强>
要解决此问题,只需打开 manage.sh 文件即可。它有一些在GAE上运行的命令实现,例如 cloudcreatedb , cloudsyncdb 和 deploy 。 因此,除了以上三个之外,没有其他命令,如迁移等。
所以我通过在 cloudsyncdb 之后添加这些行,在名为 cloudmigratedb 的 manage.sh 中创建自定义命令
cloudmigratedb)
export SETTINGS_MODE=prod && manage_script migrate --all
;;
使用args migrate调用 * manage_script * 方法--all 这是 * manage_script * :
manage_script () {
env/bin/python $MANAGE_PY/manage.py $@ --settings=$DJANGO_SETTINGS_MODULE
}
此命令与 cloudsyncdb 相同,仅在args中有所不同。因此我们将命令作为
运行hom/dev/djangoTaxi# sh manage.sh cloudmigratedb
最后在GAE上运行迁移。我在GAE上的social_auth上得到了所有表格。
快乐结局......:D