Адрес электронной почты уже занят


Я пытаюсь отредактировать пользователя, но продолжаю получать следующую ошибку:

Адрес электронной почты [их электронная почта] уже занят.

Я не редактирую их электронную почту. На самом деле, я мог бы открыть страницу редактирования, просто нажать Сохранить, ничего не меняя, и я все равно получил бы ошибку.

Почему я получаю это сообщение об ошибке?

 1
8
Author: kiamlaluno, 2016-05-04

2 answers

Похоже, что электронная почта уже находится в базе данных в другой строке. Это может иметь множество причин: двойной импорт пользователей, создание учетных записей в пользовательском модуле без надлежащей проверки наличия адреса электронной почты и т.д.

Если вы не используете формы редактирования учетной записи, но изменяете пользователей программно, может показаться, что одно и то же электронное письмо добавляется в базу данных дважды (проверка формы в этих случаях не выполняется). Затем позже, когда вы попытаетесь отредактировать одного такого пользователя, он не сможет сохранить потому что эта учетная запись вообще не должна была существовать. Эта мера существует, поэтому пользователи не могут дважды регистрироваться с одним и тем же электронным письмом, но поскольку форма создания и редактирования пользователя на самом деле является одной и той же формой (и, как таковая, имеет одинаковую проверку), это может произойти и во время сохранения пользователя.

Дважды проверьте, что у вас нет модулей, которые могут создавать учетные записи с адресов электронной почты (например. Drupal commerce) и проверьте таблицу своей базы данных users, чтобы идентифицировать дублирующуюся учетную запись.

 3
Author: Neograph734, 2016-05-04 21:16:03

Я получил ту же ошибку, потому что внешняя интеграция создавала учетные записи пользователей с дублирующими адресами электронной почты. Решением для меня было использовать drush для добавления роли:

drush urol "role" --name=username
 0
Author: Keven, 2018-12-12 18:58:14