在我的项目的最后一部分,我似乎无法正确部署 prisma 数据库。该网站成功构建,我可以查看该网站,但当我尝试访问数据库时,它显示以下内容:
无效的 prisma.product.findUnique() 调用: 当前数据库中不存在表main.Product。
我确实有让它迁移的架构:
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
...
model Product {
id String @id@unique
quantity Int @default(0)
physical Boolean @default(false)
onhold Int @default(0)
}
...
在 render.com 上的构建过程中,它指定了以下内容:
Nov 3 02:40:16 PM import { PrismaClient } from '@prisma/client'
Nov 3 02:40:16 PM const prisma = new PrismaClient()
Nov 3 02:40:16 PM
Nov 3 02:40:19 PM Prisma schema loaded from server/database/schema.prisma
Nov 3 02:40:19 PM Datasource "db": SQLite database "dev.db" at "file:./dev.db"
Nov 3 02:40:19 PM
Nov 3 02:40:19 PM No migration found in prisma/migrations
Nov 3 02:40:19 PM
Nov 3 02:40:19 PM
Nov 3 02:40:19 PM No pending migrations to apply.
我已经设置了这样的构建命令:
npm install;
prisma generate --schema=./server/database/schema.prisma;
prisma migrate deploy --schema=./server/database/schema.prisma;
npm run build;
当时最新的commit中没有迁移目录
项目构建时会包含我为迁移配置的内容吗? '--schema=...' 是否指向构建时的正确目录?
我尝试过的
总的来说,由于我缺乏知识,我的问题比我尝试过的事情还要多。
当我查看该项目的 nuxt 构建文件时,它生成的文件结构与未构建时完全不同,当将 SQL 数据库定位到 dev.db 时,它可能会指向错误吗?
另外,SQL lite 不适合生产?如果是这样,什么替代方案会更好,以及如何将该数据库安装到部署服务器上?
Nov 3 02:40:19 PM Datasource "db": SQLite database "dev.db" at "file:./dev.db"
这一行是否表明它已找到要连接的数据库? 总的来说,我很困惑为什么它找不到产品表,尽管它在我的架构中提供了。
总体问题是,是什么导致构建的 nuxt 应用程序在查询时看不到该表?
OP 通过在链接到架构之前运行迁移来解决该问题。