【发布时间】:2022-02-24 18:01:51
【问题描述】:
我有一个 Nest.Js / Prisma 应用程序使用的 PostgreSQL 数据库。
我们更改了 Prisma 架构中一个字段的名称并添加了一个新字段。
现在,当我们要更新 PostreSQL 结构时,我正在运行 as suggested by Prisma,以下命令:
npx prisma generate
然后
npx prisma migrate dev --name textSettings-added --create-only
我们的想法是在实际进行迁移之前使用--create-only 标志来检查迁移。
但是,当我运行它时,我会得到一个要对数据库进行更改的列表和以下消息:
We need to reset the PostgreSQL database "my_database" at "my_db_name@cluster.us-east-1.rds.amazonaws.com:5432".
Do you want to continue? All data will be lost.
我当然选择不继续,因为我不想丢失数据。经过检查,我发现迁移文件实际上包含我只想修改的表的DROP TABLE。如何避免?
那么如何在不影响数据的情况下运行更新呢?
更新:
我看到使用--create-only 运行会创建一个迁移,然后可以使用prisma migrate dev 在数据库级别上实现该迁移,但是,在该迁移文件中,由于内部有一些新参数,仍然有一些命令删除了我以前的表。如何在不删除 PostgreSQL 数据的情况下运行 prisma 迁移?
更新 2: 我不希望 Prisma 在我刚刚更新它们时丢弃我的表。但是,生成的迁移文件会删除它们然后更改它们。你知道避免这种下降的最佳程序是什么吗?我在某处看到我可以先使用新选项手动更新数据库,然后运行迁移,这样 Prisma 可以找到更新它的方法,但这对我来说似乎过于手动......也许还有其他想法?
【问题讨论】:
标签: postgresql prisma