Я пытаюсь исправить проблему кодировки символов - ранее у нас был установлен порядок сортировки для этого столбца utf8_general_ci, который вызывал проблемы, потому что он нечувствителен к акценту.
Я пытаюсь найти все записи в базе данных, которые могли быть затронуты.
set names utf8;
select * from table1 t1 join table2 t2 on (t1.pid=t2.pid and t1.id != t2.id) collate utf8_general_ci;
Тем не менее, это генерирует ошибку:
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
- База данных теперь определяется с помощью
DEFAULT CHARACTER SET utf8
- Таблица определена с
CHARSET=utf8
- Столбец "pid" определяется с помощью:
CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
- Версия сервера - версия сервера: 5.5.37-MariaDB-0ubuntu0.14.04.1 (Ubuntu)
Вопрос: Почему я получаю сообщение об ошибке latin1, когда latin1, кажется, нигде не присутствует в определении таблицы/схемы?
MariaDB [(none)]> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
MariaDB [(none)]> SHOW VARIABLES LIKE '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+