【mysql】さくらでRow size too large エラーの対処法

mysqlでupdateをしてデータを増やそうとしたらエラーが出た

エラー内容
—————————————————————
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
—————————————————————

これは「InnoDBの最大行長(最大行サイズ)は約8000バイト」なので発生したエラー。
最大行サイズとは、一行ごとに格納できるデータの最大容量。

VARCHAR(255)やTEXTは最大で800バイト弱を使用するので、そういったカラムが11より多い発生する可能性が出てくる。

InnoDBの最大行長8000バイトの壁は、innodb_file_format を Antelope から別のものに変更すればいいらしいが、my.cnf の設定をいじる必要がある。しかし、さくらの共用サーバープランではいじれないので諦める。

不要なカラムを削除して対応した。

タイトルとURLをコピーしました