@decezeの回答に追加するだけで、適切に構成されたMySQLサーバーをお勧めします(私にとっては、/etc/mysql/mysql.conf.d/mysqld.cnf
. を使用していることを確認するための構成オプションは次のとおりです。utfmb4
ただし、すべての MySQL 構成オプションを確認することをお勧めしますが、非常に最適ではないデフォルトが多数あるため、非常に困難です。
[client]
default-character-set = utf8mb4
[mysql]
default_character_set = utf8mb4
[mysqld]
init-connect = "SET NAMES utf8mb4"
character-set-client-handshake = FALSE
character-set-server = "utf8mb4"
collation-server = "utf8mb4_unicode_ci"
autocommit = 1
block_encryption_mode = "aes-256-cbc"
その最後のものは、デフォルトであるべきものです。また、init-connect
毎回それを実行する必要がないことを扱います。コードをきれいに保ちます。今実行します:
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 |
+--------------------------+--------------------+
そして、あなたはすでにこれを行っているように見えますが、テーブルの作成時に明示的に定義しても害はありません:
CREATE TABLE `mysql_table` (
`mysql_column` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`mysql_column`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
これが誰かに役立つことを願っています。