将模型迁移到数据库 Prisma 时出错
Error when migrating models to database Prisma
我正在开始一个项目,我必须学习一项新技术,我选择使用 Prisma 和 Next.js 构建一个全栈应用程序。我是第一次同时使用两者。我已经使用 React.js 构建了前端应用程序,并且对使用 Next 充满信心。但是,我很难开始使用 Prisma。
我正在按照 Prisma 的 'Start from Scratch' 说明进行操作,但卡在步骤 “要将您的数据模型映射到数据库架构,您需要使用 prisma migrate 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 上配置的 copied/pasted。
这是我的 .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 prisma migrate save -experimental b/c 我在 youtube 上看到的构建。我尝试了 npm install @prisma/cli --save-dev b/c 解决了在 Whosebug 上发布的相同问题。
另一个解决方案据说使用 Docker。我还没试过。
是的,目前这是因为 Prisma 需要创建应用迁移的临时数据库的权限,而 Heroku 管理的数据库不提供该权限。您可以做的一件事是在本地安装 Postgres 并将其用于开发,另一个选择是遵循线程中的 this 解决方法,该线程具有与您面临的相同问题。
根据 nikolasburk 你也可以 运行 prisma db push
而不是 prisma migrate dev
命令,只是 运行:
npx prisma db push --preview-feature
我可以通过在 Heroku 中创建另一个数据库作为我的影子数据库来解决这个问题。然后在 schema.prisma 添加下面的代码:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
}
我正在开始一个项目,我必须学习一项新技术,我选择使用 Prisma 和 Next.js 构建一个全栈应用程序。我是第一次同时使用两者。我已经使用 React.js 构建了前端应用程序,并且对使用 Next 充满信心。但是,我很难开始使用 Prisma。
我正在按照 Prisma 的 'Start from Scratch' 说明进行操作,但卡在步骤 “要将您的数据模型映射到数据库架构,您需要使用 prisma migrate 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 上配置的 copied/pasted。
这是我的 .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 prisma migrate save -experimental b/c 我在 youtube 上看到的构建。我尝试了 npm install @prisma/cli --save-dev b/c 解决了在 Whosebug 上发布的相同问题。 另一个解决方案据说使用 Docker。我还没试过。
是的,目前这是因为 Prisma 需要创建应用迁移的临时数据库的权限,而 Heroku 管理的数据库不提供该权限。您可以做的一件事是在本地安装 Postgres 并将其用于开发,另一个选择是遵循线程中的 this 解决方法,该线程具有与您面临的相同问题。
根据 nikolasburk 你也可以 运行 prisma db push
而不是 prisma migrate dev
命令,只是 运行:
npx prisma db push --preview-feature
我可以通过在 Heroku 中创建另一个数据库作为我的影子数据库来解决这个问题。然后在 schema.prisma 添加下面的代码:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
}