SOFTELメモ

</> 技術者募集

【MySQL】 Row size too large のエラーの対応

問題

MySQLのデータベースに
たくさんのTEXT型カラムを持ったテーブルを作り、
いざデータを登録しようとしたところ、エラーが出ました。

Row size too large

MySQLでBarracuda

答え

設定で 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のバージョンが上がっていくと気にならなくなる問題になるでしょう。

関連するメモ

コメント