MySQLデータベースのサービスからユーザーの名前を保存しようとしています。これらの名前には絵文字を含めることができます(例の場合のみ)MySQL utf8mb4、Emojisを保存する際のエラー
少し検索した後、私はこのtutorialにリンクするこのstackoverflowを見つけました。ステップをたどって、すべてが正しく設定されているように見えます。
このように構成されたTestTableというテーブル( "utf8mb4(_unicode_ci)に設定された文字セットと照合順序)と、このように構成された"テキスト "列(VARCHAR(191)utf8mb4_unicode_ci)があります。
私は絵文字を保存しようとすると、私はエラーを取得:私はそれらのすべてをしようとしなかったものの
Example of error for shortcake():
Warning: #1300 Invalid utf8 character string: 'F09F8D'
Warning: #1366 Incorrect string value: '\xF0\x9F\x8D\xB0' for column 'Text' at row 1
のみ絵文字私は適切に保存することができました☀️
日でした正直に言うと。
設定に何か不足していますか?
注意:保存に関するすべてのテストにはクライアント側は関係ありませんでした。 phpmyadminを使用して値を手動で変更し、データを保存します。したがって、クライアント側の適切な設定は、の後に私がを世話してくれる何かです。サーバーがemojisを適切に保存しています。
別の追記:現在、私は上記のようなエラーを取得、またはエラーとUsername
のデータを取得していないのいずれかの保存絵文字はUsername ????
として保存されます。エラーの有無は、保存方法によって異なります。 SQLステートメントを使って作成/保存するときは疑問符を付けて保存します。インラインで編集するときは疑問符を付けて保存します。編集ボタンを使用して編集するとエラーが発生します。私は、私は問題ではなく、解決策を見つけたと思う よし:
EDIT 1に感謝します。 データベース固有の変数が正しく変更されなかったようです。
私は自分のサーバー上でrootとしてログインし、変数(グローバル)を読み出しています:使用
問合せ:SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)
私のデータベース用(phpMyAdminは、同じクエリで)それが見えます
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
特定のデータベースでこれらの設定を調整するにはどうすればよいですか? また、私は最初に表示された設定をデフォルトとして持っていますが、新しいデータベースを作成するときには、設定として2番目の設定を取得します。
**編集2: "" ここ
は私my.cnf
ファイルです:
[client]
port=3306
socket=/var/run/mysqld/mysqld.sock
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld_safe]
socket=/var/run/mysqld/mysqld.sock
[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
log_error=/var/log/mysql/error.log
max_connections=200
max_user_connections=30
wait_timeout=30
interactive_timeout=50
long_query_time=5
innodb_file_per_table
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
!includedir /etc/mysql/conf.d/
これはphpmyadminの問題です。他のmysqlクライアントを試してみてください。 – jsxqf
私はそれがphpmyadminの問題だとは思わない。 Edit1で見ることができるように、conf/default変数/パラメータとデータベース上のパラメータの間にいくつかの設定ミスがあると思います。新しいデータベースを作成する場合でも。 – Loki
PMAの設定で '$ cfg [" DefaultCharset "]'とは何ですか? – miken32