2016-11-23 57 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。我改變了這兩件事情,它起作用了!非常感謝你爲我帶來解決方案,我一直在嘗試世界上所有的小東西。我會接受這個答案! *弓要掌握* –