@IvanIF

Почему MySQL индекс UNIQUE не учитывает регистр?

Я пытаюсь избежать использования одинаковых никнеймов разными пользователями.

Когда пользователь отправляет введённые при регистрации данные на сервер, я проверяю, занят ли никнейм. И если никнейм не занят, то я регистрирую пользователя.

Проблема в том, что после проверки занятости никнейма до записи в таблицу нового юзера проходит какое-то время. Оно очень мало. Но всё же теоретически возможно, что данные какого-нибудь "счастливчика" с таким же нинеймом добавятся в таблицу как раз в этот короткий промежуток времени.

Я попытался установить на столбец `user_nickname` индекс UNIQUE, но он не учитывает регистр, поэтому не даёт добавить в таблицу пользователя с ником myNickname, если уже есть пользователь Mynickname.

Возможно ли установить уникальный индекс с учётом регистра. Есть ли другой способ решения проблемы?
  • Вопрос задан
  • 307 просмотров
Решения вопроса 1
idShura
@idShura
Попробуй сделать collation utf8_bin для колонки user_nickname

ALTER TABLE `tablename` MODIFY
`user_nickname` VARCHAR(100) 
CHARACTER SET utf8
COLLATE utf8_bin
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы