MySQLでカラムの値が????になる時に本来の値を表示する方法
今回はMySQLでカラムの値が????になっている時に本来の値を表示する方法を解説します。
カラムの値を確認
下記のコマンドを叩きます。
SELECT * FROM テーブル名下記の表示になったとします。
+----+------+---------------------+--------------------------------------------------------------+--------+------------+--------+---------------------+---------------------+
| id | name | email | password | gender | birth_date | height | create_at | update_at |
+----+------+---------------------+--------------------------------------------------------------+--------+------------+--------+---------------------+---------------------+
| 4 | ???? | test001@example.com | $2a$10$OK/FOR84RuGJ4jLdK/eKwuuAFy1DzfPDYrSr.nmOKa815PTgCrrAK | male | 1990-01-01 | 170.00 | 2026-10-18 06:58:29 | 2026-10-18 06:58:29 |
+----+------+---------------------+--------------------------------------------------------------+--------+------------+--------+---------------------+---------------------+
1 row in set (0.00 sec)nameカラムの値が????になっているのが確認できます。
本来の値を表示する
下記のコマンドを叩きます。
SHOW VARIABLES LIKE 'character_set%';下記の表示になったとします。
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.4/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)「character_set_client」・「character_set_connection」が「latin1」になっているのが原因です。
下記のコマンドを叩きます。
SET NAMES utf8mb4;これで「character_set_client」・「character_set_connection」が「utf8mb4」になります。
これで????が本来の値になります。