PrismaでThe provided value for the column is too longというエラーが出た

ORMにPrismaを使っていたら

The provided value for the column is too long

というエラーに遭遇した。

iosのサブスク課金のレシート検証に成功した際recieptを保存するようにしたのだが、このデータの保存のタイミングで起こった。

prisma.schemaは以下の感じ

model Foo {
receipt String
}

なぜ起こったのか

シンプルにデータが大きすぎた。

解決策

model Foo {
receipt String @db.LongText // 追加
}

こうした

MySQLPrismaの復習

MySQLには(というか多くのRDBMSには)保持するデータに型が存在する。VARCHARやINTなど。

指定した型以外のデータを保存しようとするとPrismaがエラーを吐く。

PrismaMySQLを使う場合、単純に String だけだと VARCHAR(191) が指定される。

これでは191文字までに限定される。

MySQLにはLongTextという4294967295バイトまで格納できる型があるので今回はそれをPrismaで指定した。

MySQL database connector (Reference) | Prisma Docs