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 上托管的文件系统上写入的任何文件都将在生命周期结束时被删除。
我有一个小系统,用于使用 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 上托管的文件系统上写入的任何文件都将在生命周期结束时被删除。