部署DockerHub的cal.com镜像至K8s时Prisma表迁移失败求助
问题描述
我尝试将DockerHub上的cal.com解决方案Docker镜像部署到K8s集群,但部署流程卡壳了——Prisma的App和App_RoutingForms_Form表迁移无法完成。相关仓库为calcom/docker。
错误信息如下:
This is the error message : The table public.App does not exist in the current database. at zr.handleRequestError (/calcom/node_modules/@prisma/client/runtime/library.js:122:8308) at zr.handleAndLogRequestError (/calcom/node_modules/@prisma/client/runtime/library.js:122:7697) at zr.request (/calcom/node_modules/@prisma/client/runtime/library.js:122:7307) at async createApp (/calcom/packages/prisma/seed-app-store.ts:169:22) at async main (/calcom/packages/prisma/seed-app-store.ts:373:5) { code: 'P2021', clientVersion: '5.0.0', meta: { table: 'public.App' } } PrismaClientKnownRequestError: Invalid prisma.app_RoutingForms_Form.findUnique() invocation: The table public.App_RoutingForms_Form does not exist in the current database. at zr.handleRequestError (/calcom/node_modules/@prisma/client/runtime/library.js:122:8308) at zr.handleAndLogRequestError (/calcom/node_modules/@prisma/client/runtime/library.js:122:7697) at zr.request (/calcom/node_modules/@prisma/client/runtime/library.js:122:7307) at async seedAppData (/calcom/packages/prisma/seed-app-store.ts:21:16) at async main (/calcom/packages/prisma/seed-app-store.ts:383:3) { code: 'P2021', clientVersion: '5.0.0', meta: { table: 'public.App_RoutingForms_Form' } }
有没有人遇到过类似问题或者有解决思路?
解决思路
确认迁移执行状态
检查K8s中负责Prisma迁移的Pod(初始化容器或Job)运行日志,执行kubectl logs <migrate-pod-name>查看prisma migrate deploy是否成功完成。如果迁移失败,排查数据库连接字符串、Pod网络权限、数据库用户建表权限这些基础问题。手动触发迁移
直接连接数据库确认publicschema下是否存在缺失的表。如果确实不存在,进入cal.com镜像的Pod执行npx prisma migrate deploy强制完成迁移,或者导出Prisma迁移SQL文件直接在数据库执行。调整任务执行顺序
错误出现在种子数据脚本(seed-app-store.ts)执行阶段,说明迁移未完成就启动了种子任务。在K8s部署中:- 用
initContainers在应用容器启动前先执行迁移; - 用Job配合等待脚本,确保迁移Job执行完成后再启动种子数据Job。
- 用
校验版本兼容性
错误显示Prisma客户端版本为5.0.0,检查数据库版本是否与该版本兼容。若数据库版本过低,升级数据库或降级Prisma到匹配版本。核对schema配置
检查Prisma schema文件中的schema字段,确保设置为schema = "public",避免表被创建到其他schema下。
内容的提问来源于stack exchange,提问作者chankar7
相关产品推荐
相关产品推荐

