ROW_FORMATをDYNAMICに変更する

エラーメッセージの通り、ROW_FORMAT を DYNAMIC に変更すればいいのですが、それには innodb_file_format の設定を変更する必要があります。

RDS の場合はパラメータグループで、MySQL サーバ起動している場合は my.cnf で設定の変更が可能です。

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_file%';

+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| innodb_file_format       | Antelope |
| innodb_file_format_check | ON       |
| innodb_file_format_max   | Antelope |
| innodb_file_per_table    | ON       |
+--------------------------+----------+

Antelope を Barracuda にすればいいのですが、RDS の場合は innodb_file_format_max の設定項目が表示されなかったので変更できないかもしれません。

ただ、今回の問題に対しては innodb_file_format の設定変更だけで大丈夫です。

Barracuda に変更したら、ROW_FORMAT を変更します。

mysql> ALTER TABLE [テーブル名] ROW_FORMAT=DYNAMIC;

変更後のテーブルの状態を確認

変更前と変更後のテーブルの状態を確認してみます。

mysql> SHOW TABLE STATUS LIKE '[テーブル名]';

変更前は Row_format が Compact になっていますが、変更後は Dynamic になっているのが確認できます。

この状態で更新をすれば、冒頭のエラーは出なくなりました。

テキスト型のカラムが多いテーブルを作成して使う場合は、意識しておいた方がいいですね。

Tips記事一覧

新着記事一覧です。

関連記事一覧

「MySQLで「Row size too large」のエラーが出た時の対策」に関連した記事一覧です。

TOP