Не могу сделать поле уникальным!

0

У вас не может быть более двух уникальных полей в таблице, или я делаю что-то неправильно здесь?

У меня есть 1 уникальный ключ для имени пользователя, и я хочу его для электронной почты, но я получаю

#1062 - Duplicate entry '' for key 'email'

alter table users
add unique (email)

Tbl:

`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(40) NOT NULL,
`email` varchar(100) NOT NULL,
`registered` int(11) unsigned NOT NULL DEFAULT '0',
`is_active` tinyint(1) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`),
 UNIQUE KEY `username` (`username`)
Теги:
mysql-error-1062

5 ответов

4

Сообщается, что у вас уже есть уникальные записи в поле электронной почты, а именно: значение '' (пустая строка)

2

В столбце email в одном столбце содержится то же значение (т.е. ''). Это означает, что вы не можете поместить ограничение UNIQUE в этот столбец.

Вы можете сделать столбец нулевым, а затем обновить значение до NULL, где он в настоящее время '', а затем создать ограничение UNIQUE на нем, потому что UNIQUE разрешает null.

ALTER TABLE users MODIFY email VARCHAR(100);

UPDATE users SET email = NULL WHERE email = '';

ALTER TABLE users ADD UNIQUE KEY (email);

Кстати, почему у вас есть значение '' в столбце электронной почты? Это не действительный адрес электронной почты.

  • 1
    и именно поэтому у Билла 30 тысяч очков, а у меня 5.
  • 0
    Я не знаю - ваш средний балл за ответ 36,22. Мои средние баллы за ответ 30,51.
1

Это означает, что (как минимум) 2 записи имеют пустое электронное письмо.

Помните: NULL!= ''

Чтобы найти их:

SELECT id FROM users WHERE email= '';
0

Никакое значение не считается уникальным, поэтому две строки электронной почты с ничем не повторяются, если их судить по уникальному стандарту.

0

У вас может быть несколько уникальных полей.

Я думаю, что ошибка связана с данными в поле электронной почты. (Я думаю, что у вас более одной строки со значением '')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню