2012-04-01 2 views
1

У меня довольно странная проблема с MySQL.Ошибка записи дубликатов Mysql только после перезапуска mysql daemon

У меня есть таблица с автоматически увеличивающимися первичными ключами.

Primary keys are: 1, 2, 3, 4, 5, 6 
Next auto increment key is 7. 

Теперь я удаляю последние две записи.

Primary keys are: 1, 2, 3, 4 
Next auto increment key is 7. 

Все хорошо.

Теперь, по какой-либо причине (возможно, обновление), я перезапускаю mysql-демона.

Primary keys are: 1, 2, 3, 4 
Next auto increment key is 5. 

Поскольку эта таблица имеет внешний ключ, я получаю дубликат ошибки ввода.

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 

Как я могу убедиться, что эти повторяющиеся ошибки ввода прекращаются при каждом обновлении mysql?

Обновление: Я только что нашел эту ошибку от ! http://bugs.mysql.com/bug.php?id=199

+0

, и даже эта ошибка не объясняет вашу дублируемую проблему. Я не вижу никаких проблем с пересчитанными ПК. – zerkms

+0

Я думаю, что меня перепутала моя терминология. Пожалуйста, несите меня. Если запись дочерней таблицы ссылается на запись удаленной родительской таблицы, тогда, я думаю, будет выпущена ошибка 1062. – Kevin

+0

как бы вы даже удалили строку, если есть строки, которые ссылаются на нее ?! Когда вы удаляете родительскую строку, вы получаете другую ошибку нарушения целостности, а не дублируемую. Не могли бы вы объяснить ** подробно **, что вы делаете, чтобы получить ** двойную запись ** ошибка? – zerkms

ответ

0

Это how innodb calculates next autoincrement value: он сохраняет его в памяти, и на старте он просто получает значение MAX(id) + 1.

Не знаете, как ваша вторая часть связана с проблемой. Внешний ключ не имеет ничего общего с дубликатами, если FK может быть дублирован.

Так что вы, вероятно, объяснили проблему с дубликатами недостаточно. По крайней мере, вам нужно объяснить, что на самом деле вы делаете, чтобы получить ошибку duplicate entry

Смежные вопросы