我正在开始一个必须学习新技术的项目,我选择使用Prisma和Next.js构建全栈应用程序。我是第一次使用两者。我已经构建了带有React.js的前端应用程序,并对使用Next充满信心。但是,我很难开始使用Prisma。我在“从头开始”的指令下Prisma的年代和我卡上台阶“为你的数据模型映射到数据库模式,你需要使用PRISMA迁移CLI命令:”和我运行命令:
npx prisma migrate dev --name init --preview-feature
我得到的错误:
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"
}
}
我尝试了Introspect。但是,我的数据库当前没有表,这引发了错误。我尝试了npx pyramida migration save-在YouTube上看到的构建的实验性B / C。我尝试了npm install @ prisma / cli --save-dev b / c,它解决了stackoverflow上发布的相同问题。据说使用Docker的另一种解决方案。我还没有尝试过。
是的,这是当前的原因,因为Prisma需要权限来创建应用迁移的临时数据库,而Heroku托管数据库不提供该权限。你可以做的一件事是在本地安装Postgres并将其用于开发,另一种选择是从具有你所面临的相同问题的线程中遵循此替代方法。
感谢您发布此答案!我很确定它能奏效。我说很确定,因为我没有在heroku DB上看到表/模型。但是,我确实看到那里的迁移!这是朝正确方向迈出的一步