Редактировать данные в базе данных MySQL без первичного ключа - PullRequest
1 голос
/ 25 августа 2011

Я использую Webmin в пакете хостинга Idaq для управления базой данных MySQL.Я импортировал базу данных с предыдущего хоста и теперь обнаружил, что не могу изменить какие-либо данные, которые находятся в конкретной таблице, из-за ошибки «Данные в этой таблице нельзя редактировать, поскольку у них нет первичного ключа».

В php-скрипте я могу изменить данные, но на самом деле нужно изменить их с панели управления.

Когда я пытаюсь создать поле первичного ключа, я получаю следующую ошибку «Не удалось сохранить поле: SQL alter table * 1005»* add referenceNumber smallint not null auto_increment fail: Неправильное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ "

Мне хорошо известно, что любая таблица должна содержать первичный ключ иэто моя ошибка, но кто-нибудь может предложить какую-то помощь, пожалуйста?

1 Ответ

2 голосов
/ 25 августа 2011

Это потому, что вы не устанавливаете его в качестве ключа одновременно, поэтому он выходит из строя and it must be defined as a key, вставьте ключ в конец.

Используйте

ALTER TABLE tableName ADD autoIncrementColumn MEDIUMINT NOT NULL AUTO_INCREMENT KEY

Дополнительная информация от Йохана в комментариях

@ Мик, Чтобы добавить к ответу PEZ, если вы не предоставляете первичный ключ, MySQL добавляет скрытый первичный целочисленный ключ автоинкремента.Чтобы переопределить скрытый ключ, оператор alter table должен указать добавление нового поля и присвоение нового PK в той же строке, в противном случае скрытый PK заблокирует изменение.

...