我开始了一个项目,在那里我必须学习一项新技术,我选择了用Prisma和Next.js构建一个完整的应用程序。我第一次用这两种药。我已经构建了前端应用程序w/ React.js,并且对使用Next很有信心。不过,我很难开始和Prisma在一起。我遵循prisma的‘从头开始’的指令,我坚持步骤“将您的数据模型映射到数据库模式,您需要使用prisma迁移CLI命令:"和我运行命令:npx prisma migrate dev --name init --preview-feature I得到错误:
P3014
Prisma Migrate could not create the shadow database. Please make sure the database user has permission to create databases. More info: https://pris.ly/d/migrate-shadow. Original error:
Database error: Error querying the database: db error: ERROR: permission denied to create database我的数据库是postgresQL,它托管在heroku上。我的DATABASE_URL是从heroku的信息中复制/粘贴的。
下面是我的.json依赖关系:
"name": "photo_album",
"version": "0.1.0",
"private": true,
"scripts": {
"prisma": "prisma",
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"@prisma/client": "^2.13.1",
"next": "10.0.3",
"react": "17.0.1",
"react-dom": "17.0.1"
},
"devDependencies": {
"@prisma/cli": "^2.13.1"
}
}我试过回顾。但是,我的数据库目前没有表,这会导致错误。我尝试了npx迁移,保存了我在youtube上看到的构建的-experimental b/c。我尝试了npm @prisma/cli --save-dev b/c,它可以解决这里发布在堆栈溢出上的相同问题。另一种解决方案是使用Docker。我还没试过呢。
发布于 2020-12-21 06:45:15
是的,目前这是因为Prisma需要权限来创建一个临时数据库来应用迁移,而Heroku管理的数据库没有提供这种权限。您可以做的一件事是在本地安装Postgres并使用它进行开发,另一种选择是从线程中执行这解决方案,这与您所面临的问题相同。
发布于 2021-02-26 23:14:16
根据尼可拉斯伯克,您也可以运行prisma db push而不是prisma migrate dev命令,只需运行:
npx prisma db push --preview-feature发布于 2021-05-06 14:21:17
我可以通过在Heroku中创建另一个DB作为我的影子DB来解决这个问题。然后在schema.prisma中添加以下代码:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
}https://stackoverflow.com/questions/65384818
复制相似问题