Я прочитал все различные посты по этой теме, и ничто, кажется, точно не отражает суть того, с чем я здесь имею дело. Я надеюсь, что кто -то может помочь мне понять это. Это довольно простая таблица InnoDB, которая имеет единый идентификатор столбца первичного ключа . В этой таблице не определено никаких отношений, но другие таблицы используют столбец идентификатора в этой таблице в качестве иностранного ключа. Приложение проверяет дубликаты, прежде чем создавать новых пользователей с тем же адресом электронной почты, но в этой таблице есть некоторые автоматизированные системные интеграции, которые могут создавать временных пользователей, которые у меня были проблемы с дубликатами, создаваемыми в этой таблице, поэтому я добавил уникальный индекс в нем (поэтому оскорбительный код зарегистрировал бы ошибку, когда он пытается сделать это, и я могу подумать о том, что в этом случае. Попытка обновить учетную запись пользователя. Я посмотрел на эту ошибку и переведен запрос до самой основной версии, которая по-прежнему создает ошибку: < /p>
Код: Выделить всё
UPDATE `users` SET `email` = 'name@example.com' where `id` = '12345'
Вот в чем дело: в этой таблице нет других записей, которые имеют этот адрес электронной почты, и это адрес электронной почты, который уже установлен в строке с id 12345 .
Код: Выделить всё
SELECT id,email from `users` where email like '%name@example.com%'
< /code>
+-------+------------------+
| id | email |
+-------+------------------+
| 12345 | name@example.com |
+-------+------------------+
1 row in set (0.000 sec)
< /code>
As you can see there is only one record with this email address.
Yet, when I run the aforementioned UPDATE query, I get met with the following error:
#1062 - Duplicate entry 'name@example.com' for key 'email'
< /code>
Here is the "kick in the nuts" as they say. I can run the same exact update query for any other id/email combination found in the table and the error does not occur. I'm not changing the email. The email is already in the table exactly how I am setting it with the update query. How could there possibly be a duplicate?
Why does this only happen on this one specific record?
There are no special characters on in the real email, its all normal English letters. I even ran it through Unicode converter to ensure there weren't any funny characters causing this.
I also did and optimize table
Команда, которая дала мне: таблица не поддерживает оптимизацию, выполняя воссоздание + анализировать вместо , и это не устраняло проблему.>
Подробнее здесь:
https://stackoverflow.com/questions/795 ... licate-whi