prisma.schema string型がvarchar(191)にマッピングされる
textにマップされると思っていたので困惑した。postgresはtextにマップされるから予想と違って困惑する。
text型にマップする場合は以下のように@db.Textを指定する。
hoge String @db.Text
Prisma Schema API | Prisma Documentation
APIreferencedocumentationforthePrismaSchemaLanguage(PSL).
MySQL(InnoDB+Antelope)の場合、単一カラムインデックスを作る際に標準では767バイトまでのキー長しか扱えません。これを越えた場合
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
というエラーを目にする事になります。
絵文字も表現可能なutf8mb4を利用する場合は1文字で4バイトを消費するため、インデックスを作成する場合には191文字(
https://zenn.dev/oubakiou/books/181b750dfb6838/viewer/8385144*191=764
)が安全な最大文字数という事になります。なお扱うUTF-8が3バイト(utf8mb3)だった時代には255文字(3*255=765
)がデフォルトの最大値として利用されていました。
コメント