MySQLでテーブル作成時に「Row size too large (> 8126)」が出た場合

alkoshikawa 1,746views 更新:2015年6月26日
ERROR 1118 (42000) at line 345: 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.

こんなエラーが出た時に対処なんですが、通常

ROW_FORMAT=DYNAMIC

をテーブル作成時に指定すれば治るとか色々言われているのですが、ダメなケースは色々あるようです。自分の場合は「ROW_FORMAT」を変更してもダメでした。

ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

こんなん出るだけでした。

対処した方法は

vim /etc/my.cnf
---
innodb_strict_mode
↓
#innodb_strict_mode
---

でした。・・・・え?これってアカンことやってるときに警告くれるやつだよね・・・。

てことはエラー無視してとりあえずクエリ成功してっけどインデックスとかきかねーよ?的な?

まあこのエラーを出すテーブル作成SQLはカラムの数が狂ってるので納得ではあるんですけどね・・・。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません