2016-11-23 6 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

2つのテーブル、構造およびデータのスクリプトを生成し、FTPおよび公開リンクにzipをアップロードします。 –

+0

ありがとう!私はテーブルをエクスポートし、コードを篩い分けした後にそれらを解凍しようとしていました。私の「users」テーブルがMyISAMを使用していて、「user_profiles」テーブルがInnoDBを使用していました。私はそれらの2つのものを変更し、それは動作します!解決に導いてくれてありがとう、私は世界のすべての小さなものを試してきました。私はこの答えを受け入れるだろう! *マスターへの弓* –

関連する問題