prismaでMySQLを使う(javascript)

JavaScript

prisma.schema string型がvarchar(191)にマッピングされる

textにマップされると思っていたので困惑した。postgresはtextにマップされるから予想と違って困惑する。

text型にマップする場合は以下のように@db.Textを指定する。

hoge     String @db.Text
Prisma Schema API
APIreferencedocumentationforthePrismaSchemaLanguage(PSL).

MySQL(InnoDB+Antelope)の場合、単一カラムインデックスを作る際に標準では767バイトまでのキー長しか扱えません。これを越えた場合

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

というエラーを目にする事になります。

絵文字も表現可能なutf8mb4を利用する場合は1文字で4バイトを消費するため、インデックスを作成する場合には191文字(4*191=764)が安全な最大文字数という事になります。なお扱うUTF-8が3バイト(utf8mb3)だった時代には255文字(3*255=765)がデフォルトの最大値として利用されていました。

https://zenn.dev/oubakiou/books/181b750dfb6838/viewer/838514

コメント