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

AWS ElasticBeanStalk部署时01_migrate命令执行失败求助

排查Elastic Beanstalk中Command 01_migrate失败的问题

核心排查方向

当前日志仅提示命令执行失败,未给出具体错误细节,需从以下维度逐步定位:

1. 捕获迁移命令的详细错误输出

修改.ebextensions/db-migrate.config中的命令,将迁移日志重定向到文件,获取具体报错信息:

container_commands:
    01_migrate:
        command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate >> /var/log/migrate_detail.log 2>&1"
        leader_only: true

重新部署后,登录EC2实例查看/var/log/migrate_detail.log,文件中会包含migrate命令的具体失败原因(如数据库连接失败、迁移文件语法错误等)。

2. 验证虚拟环境路径有效性

EB的虚拟环境路径可能因平台更新或部署环境变化出现差异,可通过两种方式修正:

  • 登录实例查看实际虚拟环境路径:ls /var/app/venv/,将命令中的*替换为实际目录名
  • 使用动态查找命令确保激活正确的虚拟环境:
container_commands:
    01_migrate:
        command: "find /var/app/venv -name activate | head -1 | xargs source && python3 manage.py migrate"
        leader_only: true

3. 排查数据库连接问题

  • 通过eb printenv查看当前环境变量中的数据库配置(DB_HOST、DB_USER、DB_PASSWORD等)是否正确
  • 检查EC2实例安全组是否允许访问RDS实例,RDS安全组是否开放对应IP段的访问权限
  • 登录实例后手动测试数据库连接:
source /var/app/venv/*/bin/activate
python3 manage.py dbshell  # 尝试直接连接数据库

4. 确认Python依赖完整性

查看依赖安装日志/var/log/eb-engine.log,检查是否有依赖包安装失败的记录。登录实例后,在虚拟环境中验证核心依赖:

source /var/app/venv/*/bin/activate
pip list | grep -E "Django|psycopg2|mysqlclient"  # 确认数据库驱动和Django版本匹配

5. 检查迁移文件合法性

在本地执行python manage.py migrate --check,确认迁移文件无语法错误或版本冲突。若本地验证正常,可重新打包迁移文件部署,或在实例上手动执行迁移命令排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:40:25