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 // 追加 }
こうした
MySQLとPrismaの復習
MySQLには(というか多くのRDBMSには)保持するデータに型が存在する。VARCHARやINTなど。
指定した型以外のデータを保存しようとするとPrismaがエラーを吐く。
PrismaでMySQLを使う場合、単純に String だけだと VARCHAR(191) が指定される。
これでは191文字までに限定される。
MySQLにはLongTextという4294967295バイトまで格納できる型があるので今回はそれをPrismaで指定した。