Wie spezifiziere ich benutzerdefinierte Spaltentypen in Prisma?
P粉604848588
2023-08-18 10:18:26
<p>Prisma unterstützt derzeit keine Geodatenspalten. Ich muss meiner Datenbank eine Spalte vom Typ MySQL <code>GEOMETRY</code> hinzufügen. Ich könnte eine benutzerdefinierte Migration schreiben, aber der gesamte Zweck von Prisma besteht darin, meine Migrationen zu verwalten. </p>
<p>Wie spezifiziere ich benutzerdefinierte Spaltentypen in Prisma-Schemadateien? Kann MySQL-spezifisch sein. </p>
根据我在2021年9月的最新知识更新,Prisma不直接支持自定义列类型在模式中。但是,您可以通过在模式中使用“Raw” SQL字段来绕过此限制。这样可以为特定字段编写自定义的SQL代码,有效地控制Prisma不原生支持的列类型。 在您的情况下,您想要添加一个MySQL GEOMETRY类型的列,您可以在Prisma模式中定义一个原始的SQL字段。以下是您可能如何实现的示例: ``` model YourModel { id Int @id @default(autoincrement()) name String geom String @map("geometry_column_name") @db.VarChar(255) // 根据需要调整长度 } ``` 在这个示例中,`geom`字段被定义为一个`String`字段,使用`@map`进行自定义的SQL映射。`@db.VarChar(255)`属性用于指定数据库中的实际列类型(在这种情况下,MySQL的长度为255的VARCHAR)。您应该将`"geometry_column_name"`替换为您想要使用的实际列名。 请注意,尽管这种方法允许您定义自定义列类型并使用Prisma管理的迁移,但它可能不提供Prisma的类型安全性和验证的所有好处。此外,自我上次更新以来,Prisma的功能和能力可能已经发生了变化,因此我建议查看官方的Prisma文档或最新的资源,以了解在处理自定义列类型方面是否有任何变化或改进