web-dev-qa-db-ja.com

エラー1115(42000):不明な文字セット: 'utf8mb4'

MySQLダンプがあり、それを復元しようとしました:

mysql -u"username" -p"password" --Host="127.0.0.1" mysql_db < mysql_db

ただし、これによりエラーがスローされました。

ERROR 1115 (42000) at line 3231: Unknown character set: 'utf8mb4'

これは行3231-3233です。

/*!50003 SET character_set_client  = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;

MySQL 5.1.69を使用しています。このエラーを解決するにはどうすればよいですか?

50
saravanakumar

お使いのバージョンはその文字セットをサポートしていません。それを導入したのは5.5.3であると思います。 mysqlを、このファイルのエクスポートに使用したバージョンにアップグレードする必要があります。

このエラーは非常に明確です。コードに特定の文字セットを設定しましたが、mysqlバージョンはそれをサポートしていないため、認識していません。

https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html によると:

utf8mb4はutf8のスーパーセットです

そのため、utf8にするだけで目を閉じて希望することができるかもしれませんが、それはデータに依存するため、お勧めしません。

66
Nanne

あなたが試すことができます:

テキストエディターでsqlファイルを開き、すべてを検索して置換

utf8mb4 to utf8

再度インポートします。

27
IT Vlogs

これは役立ちます:

mysqldump --compatible=mysql40 -u user -p DB > dumpfile.sql

PHPMyAdminには、「エキスパート」エクスポートオプションと同じMySQL互換モードがあります。それは時々何もしませんでしたが。

コマンドラインまたはPHPMyAdminからアクセスできない場合は、

/*!50003 SET character_set_client  = utf8mb4 */ ; 

読むためのビット'utf8'のみ、行く方法です。

7
wuxmedia

テキストエディターでsqlファイルを開き、「utf8mb4」を検索してutf8に置き換えてください。

2
Kamran Ali

私は質問に答えています-それらのどれも完全なものを見つけられなかったので。最近のように不明な文字セット: 'utf8mb4'は、多くのデプロイメントでMySQLが5.5.3(utf8mb4が追加されたバージョン)未満であるため、かなり普及しています。


このエラーは、ステージデータベースサーバーでutf8mb4がサポートされていないことを明確に示しています。

原因:おそらくローカルにMySQLバージョン5.5.3以降があり、ステージ/ホストされたVPSにはMySQLサーバーのバージョンが5.5未満です.3

utf8mb4文字セットは、MySQL 5.5.3で追加されました。

utf8mb4は、MySQLのutf8文字セットのバグのために追加されました。 MySQLのutf8文字セットの処理では、単一のコードポイントに最大3バイトしか使用できません。これは、Unicode全体を表すには不十分です(最大コードポイント= 0x10FFFF)。このバグのある動作に依存するものを潜在的に破壊したくないため、utf8mb4が追加されました。 ドキュメントはこちら

SO回答 から:


Verification:検証するために、ダンプのインポート元のDBの現在の文字セットと照合順序を確認できます- どのように表示されますかMySQLデータベース/テーブル/カラムの文字セット


解決策1:MySQLサーバーを5.5.3(少なくとも)にアップグレードするだけです-次回は、ステージでローカルに使用するバージョンを意識してください、そしてprodについては、すべて同じでなければなりません。提案-現在、デフォルトの文字セットはutf8mb4である必要があります。

Solution2(非推奨):現在の文字セットをutf8に変換し、データをエクスポートします-正常にロードされます。

1
Nabeel Ahmed

編集ツールでmysqlファイルを開く

見つける

/ *!40101 SET NAMES utf8mb4 * /;

変化する

/ *!40101 SET NAMES utf8 * /;

Ur mysqlを保存してアップロードします。

0
senthilkumar

ここで提案されているように、utf8mb4utf8に置き換えると、問題の解決に役立ちます。私見、私はsedを使用して、データの損失を避けるためにそれらを見つけて置き換えました。さらに、大きなファイルをグラフィカルエディターで開くと、痛みが生じる可能性があります。 MySQLデータが2 GB増加します。究極のコマンドは

sed 's/utf8mb4_unicode_520_ci/utf8_unicode_ci/g' original-mysql-data.sql > updated-mysql-data.sql
sed 's/utf8mb4/utf8/g' original-mysql-data.sql > updated-mysql-data.sql

できた!

0
Tung

たぶん、データベース全体+テーブル+フィールドに同じ文字セットが必要ですか??!

つまり.

CREATE TABLE `politicas` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(250) CHARACTER SET utf8 NOT NULL,
  -------------------------------------^here!!!!!!!!!!!
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  -------------------------------------------------^here!!!!!!!!!
0
T.Todua