Иван Кулаков, применительно к теме вопроса "миграции" - это термин, придуманный и применяемый во фреймворках. В SQL вообще и MySQL в частности даже такого термина - нет в контекста вопроса. Да и автор ни тега, указывающего на язык клиентской части, ни тега какого-либо фреймворка не указал, и по тексту оно не упоминается.
В показанной таблице имеется только одно ограничение уникальности - это ограничение первичного индекса. Поле первичного ключа имеет тип BIGINT, и не может иметь значение 'MD309756-Mitsubishi' . К тому же оно отсутствует в списке полей вставки и присваивается автоинкрементом.
Иными словами, ошибка не связана с указанными таблицей и запросом. Если CREATE TEMPORARY TABLE tmp SELECT ... приводит к той же ошибке - значит, имеет место повреждение исходных данных. Проверяйте исходные таблицы, в которых может присутствовать указанное в сообщении об ошибке значение.
Это в жизни можно легко заставить человека делать две никак меж собой не связанных работы, и он будет делать, ибо никуда нахрен не денется. А в СУБД это не проходит. И как только ты пытаешься на одно поле возложить две несвязанные функции - уникальная идентификация записи и непрерывная нумерация,- сразу начинается бред и дерьмо.
Хочешь непрерывной нумерации? создай отдельное поле и пиши туда что в голову взбредёт.
А поле уникального автоинкрементного индекса не трогай. Не лезь руками. Даже не смотри на него. Оно вообще не для тебя придумано - оно для обеспечения связей с другими таблицами.
Не проверяй ничего. Если есть такое поле - этот запрос выполнится с ошибкой... да и фиг бы с им. На остальные запросы пакета это никак не повлияет.