У меня есть таблица, определенная следующим образом:
mysql> show create table temptest;
+------------+-----------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------+-----------------------------------------------------------------------------------------------------------+
| temptest | CREATE TABLE `temptest` (
`mystring` varchar(100) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+------------+-----------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Когда я использую консоль mysql (через mysql temptest) и вставляю символ через
insert into temptest values ("é");
Я вижу, что он сохраняется как кодировка "latin1"
mysql> select hex(mystring) from temptest;
+---------------+
| hex(mystring) |
+---------------+
| E9 |
+---------------+
Но если я выдаю «set names latin1» и выполняю ту же операцию, я вижу, что он хранит тот же символ в кодировке utf8.
mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into temptest values ("é");
Query OK, 1 row affected (0.01 sec)
mysql> select hex(mystring) from temptest;
+---------------+
| hex(mystring) |
+---------------+
| E9 |
| C3A9 |
+---------------+
Насколько я понимаю, "имена наборов" не должны влиять на то, как mysql хранит данные (https://dev.mysql.com/doc/refman/8.0/en/set-names.html). Что мне здесь не хватает? Любое понимание этого было бы очень признательно. Спасибо.