Я вижу много почти похожих вопросов с очевидными ответами, но я вполне уверен, что этот вопрос еще не здесь.
Мне нужно добавить столбец идентификатора с автоинкрементом в существующую таблицу и установить его в качестве первичного ключа. Я не могу потерять ни одну из существующих данных.
Я могу успешно внести изменения в структуру таблицы, но получаю ошибку об усеченных данных в новом столбце. При просмотре данных каждое значение в новом столбце с автоинкрементом равно нулю (и, следовательно, не уникально).
Как я могу снова заполнить эти значения, чтобы обеспечить уникальность моего первичного ключа?
*** Я бы предпочел избегать сброса существующих данных во временную таблицу и повторной вставки, если есть простое решение.
Текущий скрипт:
alter table the_table add new_field int first;
alter table the_table drop primary key, add primary key (new_field);
alter table the_table change new_field new_field int unsigned not null auto_increment;
Я запускаю скрипт в таком порядке, поскольку у меня не может быть столбца с автоинкрементом, который не является первичным ключом.
(MySQL 5.3)