部署在Elastic Beanstalk的Django应用无法向特定模型插入数据(本地正常)
Django Elastic Beanstalk部署后特定模型无法插入数据排查方案
问题背景
Django Web应用部署在AWS Elastic Beanstalk,使用AWS RDS PostgreSQL数据库。本地环境可正常插入特定模型的UI数据,但部署到EB后该模型无法接收UI输入,其他模型在部署环境中工作正常。已排查RDS日志、EB日志及EB实例日志,未发现错误信息。
排查步骤
- 核对迁移状态:通过
eb ssh登录EB实例,执行python manage.py showmigrations,确认该模型的迁移是否已在部署环境中成功应用,对比本地与部署环境的迁移记录是否完全一致 - 测试手动插入:在EB实例的Django Shell中(
python manage.py shell),手动创建该模型实例并调用save()方法,观察是否抛出异常(比如字段约束冲突、数据类型不匹配、权限问题) - 检查配置差异:对比本地与部署环境的
settings.py,重点关注该模型相关的配置(如条件性模型启用、权限设置),以及DEBUG模式、数据库连接参数的差异 - 验证数据库权限:确认RDS数据库账号对该模型对应的数据库表拥有
INSERT、UPDATE权限,对比其他正常模型表的权限配置 - 排查请求逻辑:检查该模型对应的视图、序列化器或表单代码,是否存在仅在生产环境触发的分支逻辑(如
if not DEBUG:下的权限校验、字段过滤),导致数据未被保存 - 核对前端请求:通过浏览器开发者工具查看部署环境下前端发送的请求Payload,确认参数完整性、字段格式与本地环境是否一致
内容的提问来源于stack exchange,提问作者Joseph Mehltretter
相关产品推荐
相关产品推荐

