Почему я получаю повторяющиеся ошибки ввода после обновления MySQL с 5.7 до 8.0?

Итак, мы только что обновились с MySQL 5.7-ubuntu до 8.0. Обновление, кажется, прошло гладко, однако теперь мы получаем ошибки «Дублирующаяся запись» каждый раз, когда пытаемся ВСТАВИТЬ.

Расследование показало, что все значения AI (автоматическое увеличение) в БД (во всех таблицах) установлены на идентификатор последний используемый в таблице, поэтому выполняется попытка ВСТАВИТЬ существующий идентификатор.

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

Может кто-нибудь объяснить, почему это произошло? (Я пытался найти это, но огромное количество ложных срабатываний)

Спасибо

Что такое ценности ИИ?

Mihai 15.05.2019 16:35

@mihai автоинкремент

Spot 15.05.2019 16:38

@Spot Каковы были ваши шаги по обновлению с MySQL 5.7 до 8.0? Вы использовали mysqldump? Если да, есть ли в файле какие-либо инструкции, в которых установлено значение автоматического увеличения? Вы выполнили команду mysql_upgrade (если требуется)? Возможно ли, что вы можете как-то указать минимальный воспроизводимый пример, что приведет к той же ошибке дублирования записи?

Progman 15.05.2019 19:43

@Progman Я использовал mysqldump, но мне не требовалось (и не было) импортировать дампы. Он выполнил обновление на месте, и мои данные все еще были на месте и заметно не изменились. Я думал, что, возможно, захочу стереть БД и импортировать данные из дампов, но хотел получить больше информации, прежде чем идти по этому пути. Предоставить воспроизводимый пример в этом случае было бы крайне сложно, поэтому я не стал этого делать с самого начала.

Spot 15.05.2019 19:54

@Progman В качестве дополнительного пояснения я использовал подходящий метод обновления в соответствии с инструкциями MySQL.com.

Spot 15.05.2019 19:56

@Spot Какой была точная исходная версия MySQL и какая точная обновленная версия MySQL?

Progman 15.05.2019 20:13

@Progman 5.7.26-0ubuntu0.16.04.1 -> 8.0.16 Оказывается, это было значение autoinc_lock_mode, которое сместило значения по умолчанию между двумя версиями. Спасибо за помощь.

Spot 15.05.2019 22:50
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
7
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

этот объясняет, как это обрабатывается в 5.7 и 8

AUTO_INCREMENT Обработка в InnoDB

https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html

Я проходил через это раньше, но вы упомянули об этом здесь, что заставило меня более тщательно изучить это. Я пропустил часть об изменении по умолчанию autoinc_lock_mode между 5.7 и 8.0. Принудительное возвращение к 1, похоже, решило проблему. Спасибо за указатель.

Spot 15.05.2019 22:46

Другие вопросы по теме