尽管其他答案非常有帮助,但也想分享我的经验。
当我删除一个id
已经被其他表(带有data)作为外键引用的表,并尝试使用其他一些列重新创建/导入该表时,我遇到了这个问题。
用于重新创建的查询(在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
什么?