2017-02-02 8 views
0

他のテーブル 'employees'を参照している 'empcompensation'テーブルに外部キーを追加しています。エラーが表示されます。Mysqlワークベンチを使用して外部キーを追加する際にエラーが発生しました

ALTER TABLE `simhrmdb`.`empcompensation` 
ADD CONSTRAINT `Fk_employee` 
    FOREIGN KEY (`employee`) 
    REFERENCES `simhrmdb`.`employees` (`id`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE; 

操作に失敗しました: にデータベースをSQLスクリプトを適用中にエラーが発生しました。
エラー1452:子行を追加または更新できません:外部 キー制約が失敗しました
( `simhrmdb`.#sql-c5c_6`、CONSTRAINT ` Fk_employee` FOREIGN KEY( `employee`)REFERENCES` employees`( `id ') SQL文:ALTER TABLE `simhrmdb`.empcompensation` ADD CONSTRAINT` Fk_employee` FOREIGN KEY( `employee`)参照` simhrmdb`.`employees`( `id`)ON

UPDATE CASCADE ON DELETE CASCADE私は前にいくつかの他のテーブルに「従業員のテーブルから同じ「ID」を追加し、それは完全に働きました。しかし今、それはエラーを作成します。 Empcompensationテーブルは、私が追加した新しいテーブルです。

このエラーログには、一部の文字が表示されます。#sql-c5c_6私はこれを理解していない。

+0

(それらを削除するなど、従業員のテーブルに対応するエントリを作成します)それらをどのように処理するかを把握する必要があります

SELECT employee FROM empcompensation LEFT JOIN employees on employee = employees.id WHERE employees.id IS NULL 

を登録しよう'は、MySQLが文を実行するために生成する内部一時テーブルです。 *子行を追加または更新できません。外部キー制約は失敗します。 –

+0

http://stackoverflow.com/help/someone-answers – e4c5

答えて

1

これはemployee列の値の一部がemployeesテーブルに見つかりません。彼らはLEFTを使用しているかを調べるあなたはその後、 `#のSQL-c5c_6

+0

つまり、現在のデータは既に制約に違反しているため、データを最初に修正する必要があります。 –

関連する問題