【MySQL】 Row size too large のエラーの対応
問題
MySQLのデータベースに
たくさんのTEXT型カラムを持ったテーブルを作り、
いざデータを登録しようとしたところ、エラーが出ました。
Row size too large
答え
設定で innodb_file_format を Barracuda にしたうえで、テーブルを ROW_FORMAT=DYNAMIC などにするとよい。
MySQL5.5以降は対応可能。(5.1はプラグインの設定などすれば対応できるとか)
MariaDBでも10.0(MySQL5.6相当)、10.1(MySQL5.7相当)は問題なく対応可能。
my.cnf
[mysqld]セクションに、以下を追加
innodb_file_per_table innodb_file_format=Barracuda
MySQLを再起動して設定反映。
問題のテーブルの変更
alter table t_plan ROW_FORMAT=DYNAMIC;
ROW_FORMAT=COMPRESSED は、圧縮、展開のオーバーヘッドが入る。性能はさほど変わらないそうだが、CPU負荷は若干上がるとか。
テーブルを作った時点で教えて欲しいエラーですが、MySQLのバージョンが上がっていくと気にならなくなる問題になるでしょう。
コメント