Как я могу изменить существующую настройку таблицы для автоматического увеличения поля PK?

Я обнаружил некоторые трудности при попытке изменить таблицу MySql с ошибкой.

В этой таблице есть поле я бы, которое установлено как ПК. Проблема в том, что при создании этой таблицы это поле не было установлено как автоматическое приращение.

Я также попытался удалить это поле и добавить его снова, установив его как автоинкремент, но я не могу этого сделать, потому что он используется в других таблицах как FK, на самом деле я получаю это сообщение об ошибке:

#HY000Cannot drop column 'id': needed in a foreign key constraint 'FK_LivestockMessageDetails_LivestockMessage' of table 'digital_services_DB.LivestockMessageDetails'
while executing:
ALTER TABLE LivestockMessage
  DROP `id`,
  ENGINE=InnoDB ROW_FORMAT=DYNAMIC DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci

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

Но как я могу изменить свою таблицу, установив ее как автоматическое приращение, не выполняя всю эту процедуру?

Попробуйте этот код sql: ALTER TABLE LivestockMessage` ИЗМЕНИТЬ КОЛОНКУ idid INT (11) NOT NULL;

Korteby Farouk 25.04.2018 11:44

@KortebyFarouk error: # 42000 У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' CHANGE COLUMN id id id INT (11) NOT NULL 'в строке 1

AndreaNobili 25.04.2018 11:45

Или в Mysql Workbench попробуйте отменить выбор столбца A в конфигурации таблицы

Korteby Farouk 25.04.2018 11:49

Он должен работать, даже если это данные

Korteby Farouk 25.04.2018 11:49
Освоение архитектуры микросервисов с 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
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте добавить опцию автоинкремента:

ALTER TABLE `your_db`.`LivestockMessage` 
CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;

Или с помощью MySQL Work Bench выберите опцию AI в конфигурации столбца:

Обновлен sql скрипт

Korteby Farouk 25.04.2018 11:58
Ответ принят как подходящий

Измените таблицу и измените столбец, чтобы включить опцию AUTO_INCREMENT?

ALTER TABLE LivestockMessage MODIFY COLUMN id INT AUTO_INCREMENT;

(Таблица сохранит ограничение PRIMARY KEY на id.)

http://sqlfiddle.com/#!9/6a1697/3

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