Python 500内部服务器错误
我使用Flask SQLAlchemy构建了一个用于学习的小系统,并部署在Heroku上(python/postgresql: 我的应用程序在本地运行良好,我已经通过了14次成功通过的测试,对其功能和用例进行了单元测试 当我部署时,一切似乎都进行得很顺利。在部署时,我定义了环境变量APP_SETTINGS>>>config.BaseConfig,我运行db_create.py脚本来初始化数据库。我创建了一些用户:Python 500内部服务器错误,python,heroku,flask,sqlalchemy,Python,Heroku,Flask,Sqlalchemy,我使用Flask SQLAlchemy构建了一个用于学习的小系统,并部署在Heroku上(python/postgresql: 我的应用程序在本地运行良好,我已经通过了14次成功通过的测试,对其功能和用例进行了单元测试 当我部署时,一切似乎都进行得很顺利。在部署时,我定义了环境变量APP_SETTINGS>>>config.BaseConfig,我运行db_create.py脚本来初始化数据库。我创建了一些用户: username-userpassword: Alex-passwordAl
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 var,新问题(图像无法加载,无法删除用户…)将在用户页面的原始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上托管的文件系统上写入的任何文件都将在dynos生命周期结束时被删除。您使用的是gunicorn。这意味着您不会在调试模式下启动开发服务器。这很好。但这意味着您需要检查日志以查看错误。@dirn谢谢您的评论。我是heroku的新手,所以我非常有限。我检查了使用“heroku logs-n 1500”记录日志。与显示错误的用户页面的请求匹配的日志只显示:2015-02-07T14:01:05.297748+00:00 heroku[router]:at=info method=GET path=“/users”host=monkey-me.herokuapp.com请求\u id=2ff807e8-7f4a-4427-ba26-6301fb541a73 fwd=“31.46.53.207”dyno=web.1 connect=1ms service=44ms status=500 bytes=456对此我能做些什么。还有其他不同的日志需要检查吗?之后是否有其他行,或者是其他行?