【发布时间】:2015-08-14 17:57:04
【问题描述】:
这些天我正在通过开发 reddit 克隆来学习 Python(2.7)/Django(1.5)。克隆几乎完成并且在我的本地环境(db = sqlite3)中完美运行。但是当我尝试在 Heroku (db = postgres) 上托管同样的东西时,事情就出错了。
具体来说,网络应用程序仍在加载,但 login、logout 和 cmets 部分正在抛出错误(我使用的是 django -registrations-redux、django-cmets 和南)。
由于应用已经上线,您可以直接到这里查看错误痕迹:
- 登录:https://salty-ridge-5419.herokuapp.com/login/
- cmets: https://salty-ridge-5419.herokuapp.com/comments/post/
我的所有文件,包括 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,并为一切使用旧的同步数据库。
此时,我的 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...
【问题讨论】:
-
在初始迁移时不创建超级用户是否有效?
-
登录/注销和评论部分仍然出现错误。这一次,当被问及超级用户时,我选择了“否”。 Syncdb 继续运行,没有出现我在问题中发布的“LINE 1:...”错误。结尾行改为:
Not synced (use migrations): - links - registration接下来我运行heroku run python2.7 manage.py migrate。最后是:You have no migrations for the 'registration' app. You might want some.这就是我所做的一切。 -
从上面继续,然后我输入:
heroku run python2.7 manage.py schemamigration registration --initial。我收到:+ Added model registration.RegistrationProfile然后我输入:heroku run python2.7 manage.py migrate registration。我收到:You have no migrations for the 'registration' app. You might want some.错误仍然存在。 -
您必须在本地创建迁移,将它们提交到 git,然后将代码推送到 Heroku。
-
同意。但是一旦在 Heroku 上,我需要运行哪些同步命令?一个是
heroku run python2.7 manage.py syncdb。还有其他人吗?
标签: python django heroku django-south heroku-postgres