Duplicate entry 'Артем' for key 'name' - LINE 170

12
FM
На сайте с 31.10.2011
Offline
113
963

Добрый день, помогите исправить эту ошибку

Duplicate entry 'Артем' for key 'name' - LINE 170

возникает она при смене кодировки БД

насколько я понимаю дубликат значения "Артем", но в строке name этих "Артем" много, да и потом придерется уже к следующему имени и тд..

как можно игнорировать или еще что-то сделать? Желательно без костылей

emariaru
На сайте с 26.10.2010
Offline
73
#1

у поля name стоит уникальный индекс, чтобы записи не дублировались

как вариант попробуйте удалить этот индекс

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#2

Уберите с name уникальный индекс, а поставьте обычный.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
N
На сайте с 06.05.2007
Offline
419
#3

А тут нельзя без костылей. Эта тема один сплошной костыль. Суть в том, что в cp1251 и utf8 была выбрана разная "сила сравнения". Буквы E и Ё считались разными, а потом в utf8 вдруг стали одинаковыми.

Раз индекс был создан уникальным, это было задумано в используемом вами движке. Если поменять collation у поля на utf8_bin, то различие больших и маленьких букв перестанет работать - перестанет правильно работать поиск по имени пользователя, например.

Все зависит от серьезности вашего подхода :

Если это говносайт, вы можете даже удалить дубли.

Либо переименовать юзеров вручную. Или хотя бы оценить объем работы. Связаться и предложить выбрать новое имя. Не так уж их и много должно быть. Помимо Артемов, обратите внимание на Женьков.

Вплоть до того чтобы собрать специальную таблицу сравнения для utf8, но считающую Е и Ё разными. (Это весьма необычно и сложно )

Ну для начала можно попробовать сделать индекс неуникальным и посмотреть как будет работать. Многие движки даже не пытаются опираться на уникальность индекса, проверяют все сами и нормально работают. Удалять индекс точно не нужно.

Кнопка вызова админа ()
FM
На сайте с 31.10.2011
Offline
113
#4
LEOnidUKG:
Уберите с name уникальный индекс, а поставьте обычный.

а как это сделать? Сначала нужно удалить уникальный индекс, а затем добавить обычный?

тупанул я, спутал 2 поля, name у меня это логин, а я думал необязательное имя, естественно он должен быть уникальным, как мне тогда дубликаты быстро удалить? Только в ручную через редактор?

PN
На сайте с 22.08.2012
Offline
103
#5
FC1488SM:
а как это сделать? Сначала нужно удалить уникальный индекс, а затем добавить обычный?

тупанул я, спутал 2 поля, name у меня это логин, а я думал необязательное имя, естественно он должен быть уникальным, как мне тогда дубликаты быстро удалить? Только в ручную через редактор?

т.е. вы хотите удалить пользователей?

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
N
На сайте с 06.05.2007
Offline
419
#6
FC1488SM:
а как это сделать? Сначала нужно удалить уникальный индекс, а затем добавить обычный?

Например, еще до конвертации кодировки через phpmyadmin снимите галочку unique . (для меня эта программа бесполезна и могу наврать)

тупанул я, спутал 2 поля, name у меня это логин, а я думал необязательное имя, естественно он должен быть уникальным,

Обычно он делается уникальным в базе в качестве дополнительного ограничения . На всякий случай.

А вот CMS при регистрации все равно может делать отдельную проверку.

Например, в vbulletin ограничения в базе нет, а настройка движка есть.

Пробуйте.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#7
proksey-net:
т.е. вы хотите удалить пользователей?

Открываете в phpmyadmin вашу таблицу и в разделе индексы удалите индекс name и создайте новый, обычный индекс.

Mad_Man
На сайте с 10.11.2008
Offline
162
#8
netwind:
Обычно он делается уникальным в базе в качестве дополнительного ограничения . На всякий случай.
А вот CMS при регистрации все равно может делать отдельную проверку.
Например, в vbulletin ограничения в базе нет, а настройка движка есть.
Пробуйте.

Угу. А потом на первой же выборке по имени, а не по айдишнику, пользователи начнут получать удовольствие от коллизий.

N
На сайте с 06.05.2007
Offline
419
#9
Mad_Man:
Угу. А потом на первой же выборке по имени, а не по айдишнику, пользователи начнут получать удовольствие от коллизий.

Ну и много вы получили удовольствий от коллизий на этом форуме ? Коллизий нет. Удовольствий нет. А Vbulletin есть.

Mad_Man
На сайте с 10.11.2008
Offline
162
#10
netwind:
Ну и много вы получили удовольствий от коллизий на этом форуме ? Их тут нет. а Vbulletin есть.

Я так понимаю, у вас есть доступ к БД этого форума и вы готовы назвать точное количество пользователей в базе с одинаковыми юзернеймами? Или вы просто не допёрли ещё, что постом выше посоветовали ТС снять индекс уникальности и позволить при смене кодировки БД иметь в ней нескольких юзверей с одним логином, осилив головой лишь кусок логики "я такой классный, знаю слово Vbulletin, там при регистрации проверка же наверно есть, нахрена мне ещё о чём-то думать?".

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий