Unknown collation: 'utf8mb4_0900_ai_ci'の対処法
mysqldumpで出力したバックアップデータを別環境でリストア(復元)できなかった際の対応メモ。
方法は他にも色々あるので、一例としてみてください。
エラー状況
リストア時に「Unknown collation: 'utf8mb4_0900_ai_ci'」というエラーが出てデータベースの復元ができない。
バックアップデータ内にある「COLLATE=utf8mb4_0900_ai_ci」という部分をすべて削ってしてしまえば、とりあえずエラーを出さずにリストアできる。しかし、バックアップデータが大きすぎて、テキストエディタでの編集ができない。
対処内容
1. 「構造のみ」と「データのみ」に分けて再度バックアップを実施
# 構造のみ場合(-d オプションをつけてmysqldumpする)
mysqldump -d -u root -h localhost test_db > "D:\backup\test_db_d.sql"
# データのみ場合(-t オプションをつけてmysqldumpする)
mysqldump -t -u root -h localhost test_db > "D:\backup\test_db_t.sql"
2. テキストエディタでバックアップファイルを修正
構造のみを出力したバックアップファイルをテキストエディタで開き、「COLLATE=utf8mb4_0900_ai_ci」の部分を一括置換などで除去。
データを含んだファイルは容量が大きすぎてテキストエディタで編集ができなかったが、構造のみとなり編集が可能となった。
3. 再度リストアの実行
先に構造のみのバックアップファイルをリストアし、次にデータのみのバックアップファイルをリストアする。
これで完了。