2017-11-27 29 views
0

にUTF8から照合私は現在、以下の設定でMySQLデータベースを持っている:MySQLの変更データベース+テーブルは、文字セット&UTF8mb4

character_set_client: utf8 
character_set_connection: utf8 
character_set_database: utf8 
character_set_filesystem: binary 
character_set_results: utf8 
character_set_server: latin1 
character_set_system: utf8 
collation_connection: utf8_general_ci 
collation_database: utf8_general_ci 
collation_server: latin1_swedish_ci 

私は、データベース内の絵文字のと(中国語のような)他の言語をサポートしたいです。現在のところ、これは動作していません、それらの文字は自動的に?に変換されます。

charset & collationutf8mb4(_general_ci)のテストデータベースを作成し、同じ設定のテーブルを作成しました。 Emojisはここで働きます。ただし、データベース設定をutf8(_general_ci)に変更してテーブルをutf8mb4(_general_ci)のままにしておくと、emojisはまだ動作していますが、これはメインデータベースでは当てはまりません。

私のメインデータベースの設定をcharset + collationutf8mb4(_general_ci)に変更しても、それでも問題ありませんか?

データベースアクセスの場合は、character_set_connectioncollation_connectionのように変更する必要がありますか? 私のJavaScriptサーバーでは、接続はutf8と設定されていますが、これはutf8mb4である必要があります。

すべての最新のutf8(_general_ci)データは、utf8mb4(_general_ci)に変更するとそのまま保持されますか?

答えて

0

正しく保存されたutf8文字はutf8mb4に正しく変換されます。

また、接続がutf8mb4であることも指定する必要があります。

「疑問符」については、thisを参照してください。

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4; 

つの列に変換するには:この回答のため

ALTER TABLE tbl MODIFY COLUMN col ... CHARACTER SET utf8mb4; 
+0

おかげutf8mb4に、すべてのchar /テキスト列を変換するには

。これが私の必要なものです。それから別のことがあります。データベースは2つの別々のサーバで動作し、 'master-master replication'を使って同期します。私は列の設定が両方で変更されているが、テーブル設定では変更されていないことがわかりました。両方のデータベースでこれを行うのは大丈夫ですか、それとも何か問題がありますか?ありがとう! – JeroenJK

+0

@ JeroenJK - サーバーが同一ではないことは奇妙に思えます。正確にどのようなコマンドを実行しましたか?文字セット/照合を指定せずに列を後で追加すると、それぞれのマシンに異なる_DEFAULTをピックアップする場合に問題が発生する可能性があります。 –

関連する問題