500 内部服务器错误 Heroku

500 Internal Server Error Heroku

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

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

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

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

当我部署时,一切似乎都很顺利。它部署后,我定义了环境变量APP_SETTINGS>>>config.BaseConfig,我运行 db_create.py 脚本来初始化数据库。我创建了一些用户:

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 错误中仍然存在。

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

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

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)
        )

关于图像消失:

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