MySQL外键错误1452,当该键看起来正常时
我正在使用phpMyAdmin。我删除了所有的表,并使用MySQLWorkbench的导出重新创建了它们(这在以前工作得很好)。 我用数据重新填充了某些表,但在这一个表上出现故障,原因是:MySQL外键错误1452,当该键看起来正常时,mysql,phpmyadmin,Mysql,Phpmyadmin,我正在使用phpMyAdmin。我删除了所有的表,并使用MySQLWorkbench的导出重新创建了它们(这在以前工作得很好)。 我用数据重新填充了某些表,但在这一个表上出现故障,原因是: #1452 - Cannot add or update a child row: a foreign key constraint fails (`col8_apps`.`companies`, CONSTRAINT `fk_companies_users1` FOREIGN KEY (`mainadm
#1452 - Cannot add or update a child row: a foreign key constraint fails
(`col8_apps`.`companies`, CONSTRAINT `fk_companies_users1` FOREIGN KEY (`mainadmin`)
REFERENCES `users` (`userid`) ON DELETE NO ACTION ON UPDATE NO ACTION)
有关的表格结构—
公司:
companyid int(10) UNSIGNED AUTO_INCREMENT
client int(10) UNSIGNED
name varchar(150)
mainadmin int(10) UNSIGNED
....
用户:
userid int(10) UNSIGNED AUTO_INCREMENT
....
我在users中有一个userid=1的用户
我正在尝试运行以下SQL:
INSERT INTO companies (companyid, client, name, mainadmin, companylogo, active)
VALUES (1,1,'Company One', 1, 'default',1);
如果我使用phpMyAdmin进行插入,它将允许我从下拉列表中选择mainadmin的用户ID,这样它就可以识别我正在使用的外键存在,但它仍然会给出上面的外键错误
有人知道这是什么原因吗
编辑:
运行SHOW ENGINE INNODB STATUS时发出了以下奇怪的消息:
Trying to add to index `fk_companies_users1_idx` tuple:
DATA TUPLE: 2 fields;
0: len 4; hex 00000001; asc ;;
1: len 4; hex 00000001; asc ;;
But the parent table `col8_apps`.`users`
or its .ibd file does not currently exist!
表肯定在那里,但我不知道.ibd文件是什么
编辑以解释为什么不重复另一个问题:我在下面添加了一个解决方案作为答案。(这是mySqlWorkbench的问题,而不是MySql(或派生版本))好的,所以我已经解决了这个问题,问题是由于某种原因,“users”表的create语句末尾没有显式的
ENGINE=InnoDB
我不知道为什么它不再为一个特定的表放这个,但是将它添加到创建脚本解决了我的问题
为了完整起见,此问题显示了在MySQL Workbench中设置存储引擎的位置:
在我的模型中,它被设置为InnoDB,但它仍然没有包含在导出脚本中,我将它设置为其他值并将其设置回,神奇地它开始正常工作…好的,所以我已经修复了它,问题在于,出于某种原因,“用户”表的create语句末尾没有明确的
ENGINE=InnoDB
我不知道为什么它不再为一个特定的表放这个,但是将它添加到创建脚本解决了我的问题
为了完整起见,此问题显示了在MySQL Workbench中设置存储引擎的位置:
在我的模型中,它被设置为InnoDB,但它仍然没有包含在导出脚本中,我将它设置为其他值并将其设置回原位,神奇地它开始正常工作…同样的问题,
通过清空表并重试连接,解决了此问题。
显然,您需要外部键表为空同样的问题,
通过清空表并重试连接,解决了此问题。
显然,您需要外部键表为空您的companyid是自动递增的,因此您不需要显式插入值-您是否已经有companyid=1的行。否,该表为空,我尝试过显式添加或不添加该值,仍然不起作用您的companyid的可能重复项是自动递增的,因此您不需要显式插入值-您是否已经有companyid=1的行。否该表为空,我尝试过显式添加和不添加,仍然不起作用