【问题标题】:Prisma db push error when removing column that has a default value删除具有默认值的列时,Prisma db push 错误
【发布时间】:2021-12-08 13:51:39
【问题描述】:

从 schema.prisma 中删除一列并运行 npm prisma db push 后,我收到了错误...

Error: The object 'users_role_df' is dependent on column 'role'.

我正在使用 Prisma 3.3.0 与 sqlserver 连接。

模型看起来像这样......

model User {
    id ....
    name ...
    role String @default("USER")
}

我看到最初的 push 创建了 CONSTRAINT users_role_df 但现在当我从模型中删除它并运行 push 时,它没有处理先删除约束然后删除列。

我该如何解决这个问题?

【问题讨论】:

    标签: prisma prisma2


    【解决方案1】:

    您可以尝试运行命令 npx prisma migrate dev --create-only 以查看生成的 SQL 用于迁移的样子。

    您可以在生成的迁移中手动添加DROP CONSTRAINT users_role_df; 或更改 SQL 命令的顺序(如果生成的迁移中已经存在这样的命令)。

    只要您在应用迁移到您的数据库之前对迁移文件进行更改,就可以了。

    【讨论】:

    • 这是个好主意。我用--create-only 运行命令,它仍然给了我同样的错误。但是它创建了迁移,我现在可以添加 DROP CONSTRAINT 脚本。 prisma 不会自动将该脚本添加到具有默认值的列中仍然没有意义。
    • 这可能是一个错误。你会考虑在 Prisma 文档中创建一个bug report 吗?如果您提供了重现问题的步骤,我们会进行调查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多