0

Mysql のインストール後、テーブルを作成し、このようなレコードをいくつか追加します

create table score (
    student_id int,
    subject varchar(10),
    subject_score int
);

insert into score values (001,'数学',50),(002,'数学',60),(003,'数学',70);

結果は

mysql> select * from score;
+------------+---------+---------------+
| student_id | subject | subject_score |
+------------+---------+---------------+
|          1 | ??      |            50 |
|          2 | ??      |            60 |
|          3 | ??      |            70 |
+------------+---------+---------------+
3 rows in set (0.00 sec)

そして、「文字セット」を変更しました

mysql> alter table score character set utf8;
mysql> alter table score modify subject varchar(10) character set utf8;
mysql> set character_set_server=utf8;


mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | /usr/local/mysql-5.5.47-linux2.6-x86_64/share/charsets/ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.00 sec)

そして私のテーブル構造は

mysql> show create table score\G;
*************************** 1. row ***************************
       Table: score
Create Table: CREATE TABLE `score` (
  `student_id` int(11) DEFAULT NULL,
  `subject` varchar(10) DEFAULT NULL,
  `subject_score` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

すべて問題ないと思いますが、テーブルにクエリを実行すると、漢字がまだ正しく表示されません

mysql> select * from score;
+------------+---------+---------------+
| student_id | subject | subject_score |
+------------+---------+---------------+
|          1 | ??      |            50 |
|          2 | ??      |            60 |
|          3 | ??      |            70 |
+------------+---------+---------------+
3 rows in set (0.00 sec)

しかし、同じレコードを再度挿入すると、新しいレコードは問題ありません!

mysql> insert into score values (001,'数学',50),(002,'数学',60),(003,'数学',70);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from score;
+------------+---------+---------------+
| student_id | subject | subject_score |
+------------+---------+---------------+
|          1 | ??      |            50 |
|          2 | ??      |            60 |
|          3 | ??      |            70 |
|          1 | 数学    |            50 |
|          2 | 数学    |            60 |
|          3 | 数学    |            70 |
+------------+---------+-------

古い記録を保存するには?誰かの助けが必要です、どうもありがとう

4

1 に答える 1