MySQLでエクスポートしたデータをインポートすると「 Unknown character set: utf8mb4」とエラーが出る場合の原因と解決方法

サーバー移転などでMySQLのデータを移行する時は「インポート/エクスポート」機能を使うと便利ですね。

「インポート/エクスポート」はphpMyAdminで行ってもいいですし、MySQLのコマンドで行ってもOKです。

ところで、エクスポートしたデータをインポートしようとすると、下のようにエラーが出でインポートができない場合がありました。

データをインポートしようとするとエラーが出る

エラー
実行した SQL:

/*!40101 SET NAMES utf8mb4 */;


MySQLのメッセージ: ドキュメント

#1115 - Unknown character set: 'utf8mb4'

上のエラーの内容を要約すると「utf8mb4の文字コードがわかんないよ」って書いてあります。

「utf8mb4」って何ですか?

「utf8mb4」とは、MySQL 5.5.3から4バイトの文字を扱うことができる文字コードのことです。(詳しくはMySQLのドキュメントをご参考ください。)

というわけで、MySQL 5.5.3より前のバージョンに「utf8mb4」の文字コードを指定したデータをインポートする時にはエラーが出てしまう、ということでした。

例えば以下のような場合はエラーが出ます。

5.6.29でエクスポートした「utf8mb4」の文字コードを指定したデータを、5.0.95にインポートしようとするとエラーになる

こうなっちゃうと「インポートはできないのか?」と思うかもしれませんが、対応する方法があります。

「utf8mb4」に対応していないMySQLにデータをインポートする方法

エクスポートしたsqlファイルをテキストエディターで開いて「utf8mb4」の記述がある場所を探します。

「utf8mb4」の記述がある場所を探す

/*!40101 SET NAMES utf8mb4 */;

そして「utf8mb4」の部分を別の文字コード「utf8」変更するとインポートできます。

文字コードを変更する

/*!40101 SET NAMES utf8 */;

もし似たようなことで「MySQLのデータがインポートできない」という場合は、一例としてご参考くださいますとうれしいです。

著者:bouya Imamura