Drupal: повторяющаяся запись '' для запроса ключа 2: - PullRequest
1 голос
/ 14 января 2011

У меня есть скрипт, который программно создает пользователей на лету для синхронизации со старой базой данных. Какое-то время это выглядело довольно хорошо. Теперь все неожиданно началось с ошибкой дубликата ключа при попытке вставить пользователя. точная ошибка:

Duplicate entry 'user@email.com' for key 2 query: INSERT INTO users (name, mail, status, pass, created).....

И я могу повторить эту ошибку прямо из консоли MySQL, если я попробую запрос там. Так вот где проблема становится странной. запись user@email.com не существует в пользовательской таблице где-либо. Таким образом, я озадачен тем, как он генерирует повторяющуюся ошибку ввода, поскольку в базе данных нет записи с этим адресом электронной почты.

Вот прямое копирование / вставка консоли MySQL. Чувствительные данные были изменены, чтобы защитить пользователя

mysql> INSERT INTO users (name, mail, status, pass, created) VALUES ('username', 'user@email.com', 1, 'encryptedpassword', 1294946026);</p> <p>ERROR 1062 (23000): Duplicate entry 'user@email.com' for key 2</p> <p>mysql> select * from users where mail='user@email.com';</p> <p>Empty set (0.00 sec)

Ответы [ 2 ]

1 голос
/ 21 сентября 2012

Вы должны использовать функцию user_save .

Например, для пользователей новостей:

$user = user_save( null, array( 'name' => 'the name' , 'mail' => 'the user mail'));
0 голосов
/ 14 января 2011
  • Экспортируйте таблицу, воссоздайте ее локально и повторите попытку вставки.
  • Может быть, есть проблема с кодировкой? Попробуйте найти всех пользователей с одним и тем же доменом, чтобы увидеть, есть ли похожие записи.
  • Используйте таблицу запросов модуля Devel, чтобы увидеть, что на самом деле происходит и в Drupal.
...