如何通过Github Actions在Docker部署的MySQL上运行Prisma迁移
问题修复方案
你遇到的P1001连接错误是由两个核心配置缺失导致的,按以下步骤修正即可:
- 补全MySQL服务健康检查命令
你当前仅配置了健康检查的间隔、重试参数,未指定具体的检查逻辑,GitHub Action无法感知MySQL是否完成初始化,会提前执行后续数据库操作步骤,导致连接失败。需要在mysql服务的options字段中添加检查命令:options: >- --health-cmd "mysqladmin ping -u root -ppassword" --health-interval 10s --health-timeout 5s --health-retries 5 - 修复MySQL镜像兼容性问题
mysql:latest默认使用caching_sha2_password身份验证插件,多数版本的Prisma驱动不支持该插件,会导致连接失败。建议固定使用兼容的稳定版本,同时可选指定兼容的身份验证插件:mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: db MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password # 其余配置保持不变 - 额外注意事项
- 作业运行在
node:latest容器内时,service的ports配置是非必要的,可直接移除,不影响容器间网络通信 - CI环境下建议将
npx prisma migrate dev替换为npx prisma migrate deploy,前者是开发环境专用命令,后者更符合CI自动化场景 - 如果你使用act本地测试工作流,需要额外添加参数指定网络模式,避免服务名解析失败:
act --container-network bridge
- 作业运行在
内容的提问来源于stack exchange,提问作者zedian
相关产品推荐
相关产品推荐

