MySQL ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci' の解決方法

beginner🗄️ MySQL2026-07-26| このエラーは、最新のMySQL 8.0サーバーからMySQL 5.7やMariaDB 10.3などの古い環境へデータベースを移行する際によく発生します。最新のMySQLが動作しているローカルの開発環境から、レガシーなバージョンを使用している共有ホスティングプロバイダーへ移行する際、頻繁に発生する問題です。

Error Message

ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'
#mysql#database-migration#sql-error#mariadb

近道:クイックな検索と置換

最も効果的な解決策は、.sqlファイル内の互換性のない照合順序(collation)文字列を、古いサーバーが実際に認識できるバージョンに置換することです。

  • コードエディタやコマンドラインツールを使用して、SQLダンプファイルを開きます。
  • utf8mb4_0900_ai_ci のすべてのインスタンスを検索し、それらを utf8mb4_unicode_ci に置換します。
  • utf8mb4_0900_as_ci も検索し、同様に utf8mb4_unicode_ci に置換します。
  • ファイルを保存し、インポート処理を再開します。

なぜこのエラーが発生するのか?

バージョン8.0のリリースに伴い、MySQLはデフォルトの文字セットを utf8mb4 に、デフォルトの照合順序を utf8mb4_0900_ai_ci に更新しました。「0900」はUnicode照合アルゴリズム(UCA)9.0.0を指します。「ai」は、ソートにおいてアクセントを区別しない(accent-insensitive)ことを示しています。

MySQL 5.7のようなレガシーバージョンは、これらの標準が策定される数年前に構築されました。そのため、「0900」の命令を理解するためのライブラリファイルが存在しません。エクスポートファイルが古いサーバーに対し、これらの新しいルールを使用してテーブルを作成するように指示すると、サーバーは処理を断念し、Error 1273をスローします。

3つの解決方法

方法1:コマンドラインを使用する(大容量ファイルに最適)

2GBのSQLダンプファイルを標準的なテキストエディタで開こうとすると、コンピュータがフリーズする可能性があります。代わりに sed を使用しましょう。これはファイルをメモリにすべて読み込むことなく、一行ずつ処理します。

# 0900照合順序を互換性のあるunicodeバリアントに置換
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' backup.sql

# アクセントを区別するバリアントが存在する場合も対象にする
sed -i 's/utf8mb4_0900_as_ci/utf8mb4_unicode_ci/g' backup.sql

注:macOSを使用している場合、構文が少し異なります:sed -i '' 's/.../.../g' backup.sql

方法2:VS Code または Notepad++ を使用する

ファイルサイズが50MB以下のように小さい場合は、ビジュアルエディタを使用するのが簡単です。

  • VS Code または Notepad++.sql ファイルを開きます。
  • Ctrl + H(Macの場合は Cmd + Option + F)を押して置換ツールを開きます。
  • 検索:utf8mb4_0900_ai_ci
  • 置換:utf8mb4_unicode_ci
  • すべて置換 をクリックしてファイルを保存します。

方法3:エクスポート時に対応する

移行元のデータベースにまだアクセスできる場合は、より互換性の高い設定でエクスポートを試みることができます。phpMyAdmin では、「エクスポート」タブに移動し「詳細」を選択します。「フォーマット特有のオプション」にある「出力の互換性を最大化するデータベースシステムまたは古いMySQLサーバー」というドロップダウンを探します。MYSQL40 を選択するのが一般的なテクニックですが、MySQL 5.7への移行においては、手動での文字列置換が依然として最も確実な方法です。

動作確認

ファイルを修正した後、インポートコマンドを再度実行します:

mysql -u username -p database_name < backup.sql

完了したら、MySQLコンソールにログインしてテーブルを確認します。SHOW TABLE STATUS; を実行し、Collation 列を確認してください。utf8mb4_unicode_ci と表示されているはずです。最後に、サイトを閲覧して、絵文字や éñ などの特殊文字が正しく表示されているか確認してください。

さらに古いバージョンに関する注意

非常に古いサーバー(MySQL 5.5.3以前)に移行する場合、utf8mb4 自体が機能しません。そのような稀なケースでは、utf8mb4utf8 に、utf8mb4_unicode_ciutf8_unicode_ci に置換する必要があります。ただし、ほとんどの現代的なホスティング環境においては、utf8mb4_unicode_ci が最も安全で互換性の高い選択肢です。

Related Error Notes