LINUX.ORG.RU

Нестандартные символы и utf8 в mysql, считает символы Ş и S одинаковыми

 , ,


0

2

Привет

Странная штука произошла, по идее в базе с кодировкой в поле varchar слова AKKUŞSAN и AKKUSSAN должны считаться разными, но уникальный индекс считает их одним словом и выдает ошибку duplicate key

Кодировка базы utf8mb4, по идее оно должно правильно работать, так как Ş обычный юникодный символ

Это баг или так и должно быть ?

mariadb 10.1

★★★

Последнее исправление: ism (всего исправлений: 2)

Ответ на: комментарий от goingUp

COLLATE='utf8mb4_general_ci'

Пример таблицы

 
CREATE TABLE `table1` (
	`t` VARCHAR(50) NOT NULL,
	UNIQUE INDEX `UK_table1_t` (`t`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

ism ★★★
() автор топика
Ответ на: комментарий от goingUp

Та же ошибка

После экспериментов удалось решить сделав поле varbinary, но это не вариант, так как django криво с binary работает

ism ★★★
() автор топика
Последнее исправление: ism (всего исправлений: 3)

Отпишусь

Создавал баг в трекере mariadb

Оказывается акценты не индексируются. Но это можно обойти включением utf8mb4_thai_520_w2 или utf8mb4_turkish_ci

https://jira.mariadb.org/browse/MDEV-15182

ism ★★★
() автор топика
Последнее исправление: ism (всего исправлений: 4)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.