部署Keystone应用至Heroku后出现main.User表不存在的Prisma错误求助
解决Keystone部署Heroku后
main.User表不存在的问题 步骤1:核对数据库连接配置
- 用Heroku CLI查看应用的数据库链接:
heroku config:get DATABASE_URL -a 你的应用名称 - 确认该链接和本地
prisma/schema.prisma里datasource db的url配置一致,避免连错数据库实例
步骤2:通过Prisma Migrate同步表结构(关键)
手动创建表会导致Prisma迁移状态不一致,必须用Prisma的迁移工具来管理:
- 本地确保已生成正确的迁移文件:执行
npx prisma migrate dev,完成后将prisma/migrations文件夹提交到Git - 在
package.json中添加自动迁移命令,让Heroku部署时自动同步:"scripts": { "start": "keystone start", "postinstall": "prisma migrate deploy" } - 若已部署,手动在Heroku执行迁移:
heroku run npx prisma migrate deploy -a 你的应用名称
步骤3:同步Prisma客户端与Schema
- 本地执行
npx prisma generate,重新生成适配当前Schema的Prisma客户端 - 将生成的
prisma/client相关文件提交到Git,重新部署到Heroku
步骤4:检查Heroku数据库的Schema与表
- 用Heroku CLI连接数据库:
heroku pg:psql -a 你的应用名称 - 执行
\dt查看所有表,若提示找不到User,检查是否是Schema问题:执行SET search_path = main;后再执行\dt,确认User表是否存在 - 若Prisma Schema中指定了
schema: "main",确保数据库的main Schema已创建
步骤5:重置数据库(仅测试环境使用)
如果以上步骤无效,且是测试环境可接受数据丢失:
- 本地执行
npx prisma migrate reset,重置本地数据库并重新生成迁移 - 提交最新迁移文件后重新部署,或手动在Heroku执行
heroku run npx prisma migrate deploy
内容的提问来源于stack exchange,提问作者Mehrez Kanzari
相关产品推荐
相关产品推荐

