2016-11-23 61 views
1

试图插入使用phpMyAdmin一行到MySQL,它是我的失败与错误:MySQL:为什么外键失败?

#1452 - Cannot add or update a child row: a foreign key constraint fails (`staging`.`user_profiles`, CONSTRAINT `fk_user_profiles_users` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) 

想不通为什么。我在MySQL Workbench中创建了数据库设计,并在开发中使用MySQL 5.7,现在不能与Percona服务器5.5一起使用。我不在哪里看?

SQL Statement and Error

Foriegn key in phpMyAdmin

这是我在MySQL Workbench中创建的表结构(破折号用于遮掩客户信息= P):

DROP TABLE IF EXISTS `staging_-----------`.`users` ; 

CREATE TABLE IF NOT EXISTS `staging_-----------`.`users` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `email` VARCHAR(255) NOT NULL, 
    `password` VARCHAR(128) NOT NULL, 
    `role` ENUM('admin', 'vet', 'client') NOT NULL, 
    PRIMARY KEY (`id`)); 


DROP TABLE IF EXISTS `staging_-----------`.`user_profiles` ; 

CREATE TABLE IF NOT EXISTS `staging_-----------`.`user_profiles` (
    `user_id` INT NOT NULL, 
    `address_one` VARCHAR(255) NULL, 
    `address_two` VARCHAR(255) NULL, 
    `age` INT NULL, 
    `sex` ENUM('m', 'f') NULL, 
    `first_name` VARCHAR(45) NULL, 
    `last_name` VARCHAR(45) NULL, 
    `city` VARCHAR(45) NULL, 
    `state` VARCHAR(45) NULL, 
    `zip` VARCHAR(6) NULL, 
    `phone` VARCHAR(45) NULL, 
    `photo` VARCHAR(255) NULL, 
    PRIMARY KEY (`user_id`), 
    INDEX `fk_user_profiles_users2_idx` (`user_id` ASC), 
    CONSTRAINT `fk_user_profiles_users` 
    FOREIGN KEY (`user_id`) 
    REFERENCES `staging_-----------`.`users` (`id`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

我一直试图让我的工作代码现在再次运行2天,并且没有爱。出了什么问题?非常感谢您的参与。

+0

试图删除一个主表,而孩子/引用表依然存在? – mishka

+0

对不起,SQL成功删除/创建表。只能使用'users'中的现有ID将行插入'user_profiles'。 –

回答

0

检查,如果你插入的值USER_ID存在存在于staging_-----------users

也许这就是问题....

+0

该值确实存在。 。中存在的“分期----”“用户”行值 ID:1 电子邮件:[email protected] 密码:awdfesgr 作用:管理 我会添加的截图“用户的表格显示成功的行,但我的声誉不允许。 –

+0

生成两个表,结构和数据的脚本,并将zip上传到ftp和公共链接。 –

+0

非常感谢!我导出了这些表格,并在筛选完代码后将其压缩了起来,并且我注意到我的'users'表使用了MyISAM,而我的'user_profiles'表使用了InnoDB。我改变了这两件事情,它起作用了!非常感谢你为我带来解决方案,我一直在尝试世界上所有的小东西。我会接受这个答案! *弓要掌握* –