500内部服务器错误Heroku

时间:2015-02-07 13:57:57

标签: python heroku flask sqlalchemy

我有一个用于学习目的的系统,用于Flask-SQLAlchemy并部署在Heroku上(python / postgresql:

http://monkey-me.herokuapp.com/

https://github.com/coolcatDev/monkey-me

我的应用程序在本地工作正常,我通过14次成功通过测试对其功能和用例进行了单元测试。

当我部署一切似乎完美无缺。它已部署,我定义了环境变量APP_SETTINGS>>>> config.BaseConfig,我运行db_create.py脚本来初始化db。我创建了一些用户:

username-userpassword:

Alex-passwordAlex
Jack-passwordJack
Sara-passwordSara

但是缺少一件事......我从主导航栏转到用户页面,我收到一个5oo内部服务器错误说:

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

app.py上的我的应用代码具有调试模式:

if __name__ == '__main__':
app.run(debug=True)

但不会显示更多错误。

请注意,如果我在heroku上访问系统并且我已注销,如果我转到用户,我应该重定向到登录页面,以便我已经调试了多远......

如果我将heroku上的环境变量LAUNCHY_DEBUG设置为true或false,一切都会变得疯狂并出现新问题...就像我无法删除用户一样,配置文件图像不会加载....

如果我从heroku中删除了LAUNCHY_DEBUG变量,则新问题(图片无法加载,无法删除用户..)会在用户页面的原始500错误中保留。

提前感谢您对调试的任何建议

1 个答案:

答案 0 :(得分:5)

使用以下内容获取更多写在日志中的反馈:

import logging

app.logger.addHandler(logging.StreamHandler(sys.stdout))
app.logger.setLevel(logging.ERROR)

这揭示了问题:

ProgrammingError: (ProgrammingError) column "user_bf.id" must appear in the GROUP BY clause or be used in an aggregate function

修改查询:

 userList = (
            users.query
            .add_column(db.func.count(friendships.user_id).label("total"))
            .add_column(user_bf.id.label("best_friend"))
            .add_column(user_bf.userName.label("best_friend_name"))
            .outerjoin(friendships, users.id == friendships.user_id)
            .outerjoin(user_bf, users.best_friend)
            .group_by(users.id, user_bf.id)
            .order_by(test)
            .paginate(page, 6, False)
        )

关于图像消失:

在dynos生命周期结束时,将删除在heroku上托管的文件系统上写入的任何文件。