MySQLエラー #1273の解決方法:「Unknown Collation 'utf8mb4_unicode_520_ci'」

中級📝 WordPress2026-07-09| MySQL 5.5以前, MariaDB 10.0以前, phpMyAdmin, WordPress移行

Error Message

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci'
#wordpress#mysql#データベース#移行#phpmyadmin

問題の発生

LocalWPやXAMPPなどのローカル環境から本番サーバーへWordPressサイトを移行している最中だとします。phpMyAdminで「インポート」ボタンを押すまでは順調に見えますが、突然、次のようなイライラするメッセージとともにプロセスが停止してしまいます。

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci'

このエラーにより、データベースの作成が途中で止まってしまいます。正常に動作するWebサイトの代わりに、空のデータベースと、あの恐ろしい「データベース接続確立のエラー」画面が残されることになります。

原因

原因は、移行元と移行先のサーバー間のバージョン差異です。utf8mb4_unicode_520_ci照合順序は、Unicode 5.2.0標準をサポートするためにMySQL 5.6およびMariaDB 10.1で導入されました。これは、絵文字や複雑な文字を処理するための現代的な標準です。

ローカル環境でMySQL 8.0を使用している一方で、本番環境がMySQL 5.5(10年以上前のバージョン)のような古いバージョンを動かしている場合、サーバーは「520_ci」という命令を認識できません。そのライブラリに該当する照合順序が存在しないためです。

解決策1:手動での検索と置換(100MB以下のファイルに最適)

すでに.sqlファイルがある場合は、エクスポートし直す必要はありません。VS Code、Sublime Text、Notepad++などの高機能なテキストエディタを使用して、互換性のない照合順序を取り除くことができます。

手順:

  • エディタで.sqlファイルを開きます。
  • Ctrl + H(Macの場合はCmd + H)を押して、検索と置換ツールを起動します。
  • 検索する文字列:utf8mb4_unicode_520_ci
  • 置換後の文字列:utf8mb4_unicode_ci
  • すべて置換をクリックして、ファイルを保存します。

それでも失敗しますか?一部の非常に古いサーバーはutf8mb4自体をサポートしていません。エラーが解消されない場合は、utf8mb4utf8に、utf8mb4_unicode_ciutf8_general_ciに置換してみてください。これにより、2005年以降のほぼすべてのサーバーと互換性のある形式にデータベースがダウングレードされます。

# 修正前:
CREATE TABLE `wp_posts` (
  ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

# 修正後:
CREATE TABLE `wp_posts` (
  ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

解決策2:互換モードでのエクスポート

もし元のサイトにまだアクセスできるのであれば、古いサーバーでも動作するようにphpMyAdminでエクスポートの設定を変更できます。

  • 移行元のサーバーでphpMyAdminを開きます。
  • エクスポートタブをクリックします。
  • 詳細 - 可能なすべてのオプションを表示を選択します。
  • フォーマット特有のオプションセクションを探します。
  • 「作成するクエリの互換性(Database system or older MySQL server to maximize output compatibility with:)」の設定をNONEからMYSQL40に変更します。
  • 下にスクロールして実行をクリックします。

これにより、より古く汎用的な構文を使用してエクスポートが強制され、インポート時のエラー #1273を効果的に回避できます。

解決策3:コマンドラインを使用する(500MB以上のデータベースに最適)

巨大なSQLファイルは、標準的なテキストエディタをクラッシュさせます。大規模なデータベースを扱っている場合は、ターミナルでsedコマンドを使用して文字列を直接置換します。

# 照合順序の文字列を即座に置換するにはこれを実行します
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' database_dump.sql

コマンドが終了したら、最高速でインポートするためにWP-CLIを使用します:

wp db import database_dump.sql

結果の再確認

インポートが完了したら、60秒かけてデータが「ダウングレード」に耐えられたか確認しましょう。以下の3点を確認してください。

  • テーブル構造: phpMyAdminでwp_postsテーブルを閲覧します。行が読み込まれれば、照合順序は受け入れられています。
  • サイトの機能: WordPressのページをいくつかクリックして確認します。画像やメニューが正しく表示されているかチェックしてください。
  • 特殊文字: éではなくéのような「文字化け」がないか探します。これらが見られる場合は、コンテンツにutf8mb4が必要だったにもかかわらず、utf8_general_ciまでダウングレードしすぎた可能性があります。

次回以降の防止策

これを避ける最も簡単な方法は、開発環境と本番環境を同期させておくことです。ホストがMySQL 5.5を使用しているなら、ローカル開発にMySQL 8.0を使用しないでください。

あるいは、WP Migrate LiteAll-in-One WP Migrationのような移行プラグインを使用してください。これらのツールはサーバーのバージョンを自動的に検出し、照合順序の変換を処理してくれるため、SQLコードを一行も触る必要がありません。

Related Error Notes