You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Elastic Beanstalk中Django迁移执行失败问题求助

解决Elastic Beanstalk Django迁移未生效及捕获migrate输出的问题

一、捕获migrate命令的完整输出

当前脚本中migrate命令的输出未被记录到eb-hooks.log,可通过以下修改让所有输出(包括错误信息)都写入日志:

修改.platform/hooks/predeploy/01_migrate_pre.sh脚本:

source /var/app/venv/staging-LQM1lest/bin/activate
echo "Running migrations predeploy"
# 增加--verbosity 2获取详细执行信息,2>&1将错误输出重定向到标准输出
python /var/app/staging/manage.py migrate --verbosity 2 2>&1
python /var/app/staging/manage.py showmigrations
echo "finished migrations"

修改后eb-hooks.log会包含migrate的完整执行日志,比如迁移失败原因、是否找到待执行迁移等关键信息。

二、修复迁移未生效的核心问题

你的脚本中使用了/var/app/current/manage.py,但Elastic Beanstalk的predeploy钩子执行时机是在新版本代码解压到/var/app/staging后,还未将其切换为current之前。此时current目录仍是旧版本代码,新迁移文件(如0028_alter_sideeffect_se_name)仅存在于staging目录中,因此用current的manage.py无法找到并执行新迁移。

解决方法是将脚本中所有/var/app/current替换为/var/app/staging,如上面的脚本示例。

额外排查点

若修改路径后仍有问题,可通过捕获的日志进一步排查:

  • 检查数据库连接:确认EB环境的数据库配置(如RDS_HOSTNAME、RDS_USERNAME等环境变量)是否正确传递给Django
  • 检查迁移文件依赖:确认0028迁移是否依赖未执行的其他迁移,或存在命名/语法错误
  • 检查权限:确保webapp用户对staging目录和数据库有足够操作权限

内容的提问来源于stack exchange,提问作者RobMcC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:44:58