尽管其他答案很有帮助,但也只是想分享我的经验。
当我删除了一个已经在其他表(带有数据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;