使用Serverless Bref CLI执行Laravel migrate命令返回状态码1异常
Laravel+Bref数据库迁移报错(非零状态码1)排查与解决方法
核心问题分析
执行serverless bref:cli --args="migrate --force"返回非零状态码1,说明迁移命令本身执行失败,但当前堆栈跟踪未提供具体错误原因,需逐步排查定位。
排查与解决步骤
1. 获取详细迁移日志
当前日志仅显示命令退出状态,需开启 verbose 模式获取具体错误:
serverless bref:cli --args="migrate --force -vvv"
该命令会输出Laravel迁移的详细错误信息,比如数据库连接失败、迁移文件语法错误、权限不足等关键线索。
2. 验证VPC网络连通性
- Lambda安全组出站规则:确保允许访问RDS的5432端口,可临时添加出站规则允许所有TCP流量(测试用,后续按需收紧)。
- RDS安全组入站规则:添加Lambda所在安全组作为源,开放5432端口,允许Lambda发起数据库连接请求。
- 子网与NAT网关:若RDS部署在私有子网,Lambda所在子网必须是同一VPC的私有子网且配置NAT网关,否则无法访问RDS;若RDS为公开访问,Lambda子网需具备公网访问能力。
3. 核对数据库环境变量
- 检查
serverless.yml中DB相关变量(DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD)是否无拼写错误、多余空格。 - 执行以下命令确认Lambda环境中实际加载的变量:
serverless bref:cli --args="env"
4. 检查数据库用户权限
确保数据库用户拥有迁移所需的完整权限,执行以下SQL语句(替换对应数据库和用户名):
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_db_username'@'%'; FLUSH PRIVILEGES;
5. 验证迁移文件与环境兼容性
- 本地执行
php artisan migrate --force测试迁移文件是否正常,若本地报错则先修复迁移文件再重新部署。 - 确认Bref环境已安装PostgreSQL扩展:
在serverless.yml中添加对应层:
在项目根目录layers: - ${bref:layer.php-82} # 替换为你的PHP版本 - ${bref:layer.extra-php-extensions}php/conf.d/extensions.ini中添加:extension=pgsql.so extension=pdo_pgsql.so
6. 调整Lambda资源配置
若迁移任务较大,默认Lambda配置可能不足:
在serverless.yml的provider节点下添加:
memorySize: 256 # 可根据需求调高 timeout: 30 # 最大支持900秒,按需调整
内容的提问来源于stack exchange,提问作者Jean Linux
相关产品推荐
相关产品推荐

