Хотя другие ответы весьма полезны, я просто хотел поделиться своим опытом.
Я столкнулся с проблемой, когда удалил таблицу, на которую id
уже ссылались как на внешний ключ в других таблицах ( с данными ), и попытался воссоздать / импортировать таблицу с некоторыми дополнительными столбцами.
Запрос на восстановление (сгенерированный в phpMyAdmin) выглядел следующим образом:
CREATE TABLE `the_table` (
`id` int(11) NOT NULL, /* No PRIMARY KEY index */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
... /* SOME DATA DUMP OPERATION */
ALTER TABLE `the_table`
ADD PRIMARY KEY (`id`), /* PRIMARY KEY INDEX */
ADD UNIQUE KEY `uk_acu_donor_name` (`name`);
Как вы можете заметить, PRIMARY KEY
индекс был установлен после создания ( и вставки данных ), которое вызывало проблему.
Решение
Решение состояло в том, чтобы добавить PRIMARY KEY
индекс в запрос определения таблицы для того, на id
который ссылались как на внешний ключ, а также удалить его из ALTER TABLE
части, где были установлены индексы:
CREATE TABLE `the_table` (
`id` int(11) NOT NULL PRIMARY KEY, /* <<== PRIMARY KEY INDEX ON CREATION */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
table2.IDFromTable1
аtable1.ID
?