Lolipop(ロリポップ)からXserver(エックスサーバー)へのサーバーを移管など、旧サーバーから新サーバーへのWEBサイトの移管作業において、データベースのSQLファイル(またはその圧縮ファイル)をインポートするときに以下のようなエラーが発生することがあります。
この記事ではこのエラーの原因と対処法についてまとめています。
なお、私は元々Lolipopで運用していたのですが、数年間運用することでLolipopの重大な問題が発覚したために、いろいろと調べて、Xserverに移管することにしました。
移管に至った経緯や、XserverとConoha Wingの比較などについては下記をご参考ください。Xserverの料金が1万円引きになるリンクも紹介しています(私の場合これが最終的な決め手でした)
エラーの原因
エラーメッセージ 「#1273 – 不明な照合順序: ‘utf8mb4_0900_ai_ci’ 」は、MySQL 8.0で導入された新しい照合順序 utf8mb4_0900_ai_ci が、MySQL 5.7ではサポートされていないことが原因です。
移管前の旧サーバーのMySQLのバージョンが「8.0」だったのに対して、移管後のMySQLのバージョンが「5.7系」だった場合に発生します。
実際に移管前のデータベースのバージョンを確認してみると「8.0」になっています。
これに対して、移管後のデータベースのバージョンは「5.7系」になっています。
対処法
このエラーを解決するためには、SQLファイル内の照合順序を、MySQL 5.7でサポートされているものに変更する必要があります。
具体的には以下のように書き換えます。
utf8mb4_0900_ai_ci
↓ 変更後
utf8mb4_general_ci
対象の文字列を置換してファイルを保存し、再度インポートすれば完了です。
実例
VScodeなどのエディタでインポートしたSQLファイルを開きます。
ctrl + H で「utf8mb4_0900_ai_ci」を検索します。
ここでは、3か所ヒットしました。
ctrl + h で置換します。
ファイルを保存して、再度インポートします。
無事インポートが完了しました。
以上で対処は完了です。