在Heroku

时间:2015-06-01 10:07:15

标签: python django heroku django-south heroku-postgres

这些天我通过开发reddit克隆来学习Python(2.7)/ Django(1.5)。克隆几乎完成并在我的本地环境中完美运行(db = sqlite3)。但是当我尝试在Heroku(db = postgres)上托管相同的东西时,事情就会出错。

具体来说,网络应用仍然会加载,但登录注销评论部分会导致错误(我' m使用django-registrations-redux,django-comments和south)。

由于应用程序在线,您只需到此处查看错误跟踪:

我的所有文件,包括requirements.txt等,都可以在这里找到:https://github.com/mhb11/unconnectedredditapp

令我感到困惑的是,这件事在本地继续完美运作,但在Heroku上却没有。我假设我可能捏造了南方的迁徙。但是,我一整天都在删除我的Heroku应用程序并设置新的应用程序。每次在新应用程序上运行syncdb命令时,在Django-auth系统安装和表创建后设置超级用户凭据后,我都会收到以下错误:

DatabaseError: relation "links_userprofile" does not exist
LINE 1: ...rofile"."user_id", "links_userprofile"."bio" FROM "links_use...

我使用heroku run python2.7 manage.py syncdb --migrate(即syncdb并一起迁移)进行跟进,这次迁移不会发出错误。但无论如何,应用程序仍然提供了我在开始时指出的数据库错误。

我想我应该在我的本地设置中卸载South,并使用好的旧syncdb来处理所有事情。

此时,我的heroku部署可能出现问题,所以我知道你可能无法给我一个精确的解决方案。但是用我所有的想法打击了我 - 我开始尝试所有的东西,因为这件事现在已经被困在我身上48小时了。救命啊!

注意:如果您最终签出克隆版本(https://salty-ridge-5419.herokuapp.com/),请原谅不是英文的文字标签。

执行git push heroku master之后运行 syncdb命令时出现错误跟踪:

(unconnectedreddit)has@has-VirtualBox:~/Desktop/uncreddit$ heroku run python2.7 manage.py syncdb
Running `python2.7 manage.py syncdb` attached to terminal... up, run.8792
CHECKING_HEROKU!
ON_HEROKU!
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 django_comments
Creating table django_comment_flags
Creating table south_migrationhistory

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 'u8919'): mhb
Email address: bhs@bhs.com
Password: 
Password (again): 
DatabaseError: relation "links_userprofile" does not exist
LINE 1: ...rofile"."user_id", "links_userprofile"."bio" FROM "links_use...

1 个答案:

答案 0 :(得分:1)

问题通过运行heroku config:set ON_HEROKU=1解决了。在我的settings.py文件中,我在本地使用了sqlite3,但在Heroku上恢复为postgres。 运行syncdb之前将ON_HEROKU设置为1 ,因此解决了我的问题。