Страница 1 из 1

Автоинкремент и существующая таблица

Добавлено: Пт 04 май 2018 06:26
SergeyW
Невозможно создать поле Автоинкремент на уже существующей таблице с данными.

Re: Автоинкремент и существующая таблица

Добавлено: Пт 04 май 2018 09:47
Alexander
Мы исследуем данную проблему и сообщим Вам о результате.

Re: Автоинкремент и существующая таблица

Добавлено: Пт 11 май 2018 15:57
Alexander
Не могли бы Вы прислать нам скриншот ошибки, а также CREATE выражение данной таблицы?

Вы можете прислать ответ напрямую в нашу службу поддержки на supportATdevartDOTcom и alexaATdevartDOTcom

Re: Автоинкремент и существующая таблица

Добавлено: Пт 11 май 2018 18:32
SergeyW
1. Создаем таблицу.

Код: Выделить всё

CREATE TABLE test.table1 ( Name varchar(50) DEFAULT NULL)ENGINE = INNODB;
2. Добавляем в нее данные. Любые, важно чтобы было 2 или более строки.

Код: Выделить всё

INSERT INTO test.table1 VALUE('1'),('2');
3. Добавляем первый ключевой столбец ID. Скрипт, который создает программа:

Код: Выделить всё

-- Создать столбец `id` для таблицы `table1`
ALTER TABLE table1 ADD COLUMN id INT(11) NOT NULL;
-- Изменение порядка колонок в таблице `table1`
ALTER TABLE table1 MODIFY id INT(11) NOT NULL FIRST;
-- Создать индекс `PRIMARY` для объекта типа таблица `table1`
ALTER TABLE table1 ADD PRIMARY KEY (id);
-- Изменить столбец `id` для таблицы `table1`
ALTER TABLE table1  MODIFY id INT(11) NOT NULL AUTO_INCREMENT;

При выполнении строки

Код: Выделить всё

ALTER TABLE table1 ADD PRIMARY KEY (id);
получаем ошибку Duplicate entry '0' for key 'PRIMARY'. И это естественно, так как первой командой мы создаем поле с "NOT NULL", которое будет заполнено "0". Какое может быть PRIMARY на одинаковое содержимое!?

Если вместо 4 строк использовать одну

Код: Выделить всё

ALTER TABLE `table1` ADD COLUMN `Id` INT NOT NULL AUTO_INCREMENT FIRST,	ADD PRIMARY KEY (`Id`);
, то ошибки нет. ;)

Re: Автоинкремент и существующая таблица

Добавлено: Вт 15 май 2018 12:13
Alexander
Спасибо за ответ.

Мы воспроизвели данную проблему и исправим её в следующей версии продукта.

Re: Автоинкремент и существующая таблица

Добавлено: Вт 15 май 2018 15:26
SergeyW
Спасибо!