MySQL5.1のDBのダンプをMySQL5.7おDBにインポートしたらSQL エラー (1118): Row size too large (> 8126)が発生した。
特定のテーブルでこのエラーが発生しており、このテーブルではvarcharで定義された項目が400程度もある。
InnoDBではレコードサイズが8192を超えてはだめらしい。
MySQL5.1ではチェックが甘いためか?
このSQLが通っていたがMySQL5.7ではそれがだめになったようだ。
根本的な解決策はQiitaを参照するとして、
今回はとりあえずエラーを回避するためにエラーチェックを緩くする。
確認のために以下のSQLを実行するとエラーが発生。
create table TESTSIZE ( FLD01 varchar(12), FLD02 varchar(12), 省略 FLD298 varchar(12), FLD299 varchar(12), FLD300 varchar(12) )ENGINE=InnoDB
その後、以下のコマンドで環境変数を変更してSQLを実行すると警告は表示されるが無事にテーブルは作成される。
set innodb_strict_mode=0;
恒久的な処置としてはmy.cnfに以下を追加
innodb_strict_mode = 0
MySQLを再起動して対応
こちらも参考にさせていただきました
teratail