2016-10-20 2 views
0

ほとんどのEmojisが最初に格納されていたので、FacebookやTwitterの投稿をMysqlデータベースに保存しています。私たちはこれから先に行ってデータベースサーバの設定を変更してから、Emojisが保存され、正しく表示されるようになっていますが、Emojisの一部はまだ表示されていますか?悲しいことに、あります。私はそれらの1つがバスケットボールだったことを知っている。MySQLは、UTF8MB4を使用している場合、Emojisをいくつかのテキストフィールドに保存します。

私はMySQLで次のようなコメントを実行します。

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' 
        OR Variable_name LIKE 'collation%'; 

次の設定があります。

character_set_client  = utf8 
character_set_connection = utf8 
character_set_database = utf8mb4 
character_set_filesystem = binary 
character_set_results = utf8 
character_set_server  = utf8mb4 
character_set_system  = utf8 
collation_connection  = utf8_general_ci 
collation_database  = utf8mb4_unicode_ci 
collation_server   = utf8mb4_unicode_ci 

私たちのデータベースサーバは、Rackspaceでホストされています。

[client] 
default-character-set = utf8mb4 

[mysql] 
default-character-set = utf8mb4 

[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init-connect='SET NAMES utf8mb4' 

多くのクライアント、PHP、Java、MySQL Workbenchを使用してデータベースからの出力をテストしました。

Emojisが保存されていない理由を今私は失っています。私はWeb上で見つけられるように多くのアドバイスを続けてきました。

+0

一部の絵文字は、3バイトのutf8エンコーディングに適合しています。 utf8mb4の4バイトが必要なものもあります。 –

答えて

0

character_set_client/connection/results = utf8 - これら3つはSET NAMESによって変更されます。あなたがリストアップしたものは、SET NAMESが実行される前のようです。

rootとして接続している場合は、init-connectは実行されません。おそらくこれはあなたがそれを見ない理由です。

すべてのアプリケーション作業にSUPER以外のユーザーを設定します。そうすればinit-connectが実行されます。

+0

データベースに接続しているユーザーがrootではありません。あなたはMySQLの設定で、init-connectは他の3行の前にあるべきだと提案していますか? – SheppardDigital

+0

順序は関係ありません。 'root'は 'set'を実行しないので、ゴミを得ることができます。 –

関連する問題