将模型迁移到数据库 Prisma 时出错

如何解决将模型迁移到数据库 Prisma 时出错

我正在开始一个项目,我必须学习一项新技术,我选择使用 Prisma 和 Next.js 构建一个全栈应用程序。我是第一次使用两者。我已经使用 React.js 构建了前端应用程序,并且对使用 Next 充满信心。但是,我很难开始使用 Prisma。 我正在按照 Prisma 的“从头开始”说明进行操作,但我一直停留在 “要将您的数据模型映射到数据库架构,您需要使用 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 上的配置复制/粘贴的。

这是我的 .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"
  }
}

我尝试了自省。但是,我的数据库目前没有表,这引发了错误。我尝试了 npxprisma migrate save -experimental b/c 我在 youtube 上看到的构建。我尝试了 npm install @prisma/cli --save-dev b/c,它适用于在 stackoverflow 上发布的相同问题。 另一个解决方案是使用 Docker。我还没试过。

解决方法

根据 nikolasburk 你也可以运行 prisma db push 而不是 prisma migrate dev 命令,只需运行:

npx prisma db push --preview-feature
,

是的,目前这是因为 Prisma 需要权限来创建应用迁移的临时数据库,而 Heroku 托管数据库不提供该权限。您可以做的一件事是在本地安装 Postgres 并将其用于开发,另一种选择是遵循与您面临相同问题的线程中的 this 解决方法。

,

我可以通过在 Heroku 中创建另一个数据库作为我的影子数据库来解决这个问题。然后在 schema.prisma 中添加以下代码:

datasource db {
  provider          = "postgresql"
  url               = env("DATABASE_URL")
  shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-