MySQLでのリストアについて。
先日実務でtext型のカラムが複数あるテーブルを読もうとしたら下記エラーがでてこけました。
1 |
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help |
なにやらカラム数が多い&TEXTorBLOB型だとこのエラーがでるようです。
対策
/etc/my.confに下記設定を追加し、再起動
1 2 3 4 5 |
[mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix innodb_strict_mode=0 |
TABLEの定義文にROW_FORMAT=DYNAMICかROW_FORMAT=COMPRESSEDをつける
これで読み込めました。
ちなみに、テーブルが数十あってあるテーブルだけこける場合、下記のようなやり方がおすすめです。
- ダンプファイルを下記方法でテーブルごとに区切る。
参考MySQL小ネタ テーブル単位のリストア・SQLの小ネタ(バックスラッシュの検索) - 問題のあるテーブルのファイル、外し、残りをcatで再度同一のテキストファイルにする
こうして読み込んでみましょう。
参考リンク
Row size too large (> 8126). が出たので、解決がてら周辺知識をまとめてみた
【MySQL5.6->5.7】 とてもたくさんの列をもったテーブルをつくりたい/Row size too large (> 8126)についてかんがえる