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を使用しています。このエラーを解決するにはどうすればよいですか?
お使いのバージョンはその文字セットをサポートしていません。それを導入したのは5.5.3
であると思います。 mysqlを、このファイルのエクスポートに使用したバージョンにアップグレードする必要があります。
このエラーは非常に明確です。コードに特定の文字セットを設定しましたが、mysqlバージョンはそれをサポートしていないため、認識していません。
https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html によると:
utf8mb4はutf8のスーパーセットです
そのため、utf8にするだけで目を閉じて希望することができるかもしれませんが、それはデータに依存するため、お勧めしません。
あなたが試すことができます:
テキストエディターでsqlファイルを開き、すべてを検索して置換
utf8mb4 to utf8
再度インポートします。
これは役立ちます:
mysqldump --compatible=mysql40 -u user -p DB > dumpfile.sql
PHPMyAdminには、「エキスパート」エクスポートオプションと同じMySQL互換モードがあります。それは時々何もしませんでしたが。
コマンドラインまたはPHPMyAdminからアクセスできない場合は、
/*!50003 SET character_set_client = utf8mb4 */ ;
読むためのビット'utf8'
のみ、行く方法です。
テキストエディターでsqlファイルを開き、「utf8mb4」を検索してutf8に置き換えてください。
私は質問に答えています-それらのどれも完全なものを見つけられなかったので。最近のように不明な文字セット: '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に変換し、データをエクスポートします-正常にロードされます。
編集ツールでmysqlファイルを開く
見つける
/ *!40101 SET NAMES utf8mb4 * /;
変化する
/ *!40101 SET NAMES utf8 * /;
Ur mysqlを保存してアップロードします。
ここで提案されているように、utf8mb4
をutf8
に置き換えると、問題の解決に役立ちます。私見、私は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
できた!
たぶん、データベース全体+テーブル+フィールドに同じ文字セットが必要ですか??!
つまり.
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!!!!!!!!!