2010-12-17 5 views
0

他にも、MySQLで問題があります。 MySQL CLIでDELETE FROM users where user_id ='1';を実行できませんでした。 は、だから私はphpMyAdminの中で試してみました:テーブル内の行を削除できません(MySQL)

SQLクエリ: は、行を削除するには、GUIを使用して、私はこれを得た

DELETE FROM `health_portal`.`users` WHERE `users`.`user_id` =1 

MySQLは言った:ドキュメント

Cannot delete or update a parent row: a foreign key constraint fails (`health_portal`.`users`, CONSTRAINT `users_ibfk_2` FOREIGN KEY (`doctor_id`) REFERENCES `users` (`user_id`)) 

は、私はこれを見上げエラーが発生しました: エラー:1451 SQLSTATE:23000(ER_ROW_IS_REFERENCED_2)

メッセージ:Can not de親列を更新または更新する:外部キー制約が失敗する(%s)

私は何が間違っているのか分かりませんが、誰でも私にヘッドアップを与えることができます。

多くのthx!

答えて

6

on delete no actionまたはon delete restrictの外部キーでこのユーザーを参照している医師がいます。外部キーをon delete set null(参照先の医師のuser_idをnullに設定)またはon delete cascade(医師をユーザーとともに削除する)に変更するか、手動で医師を別のユーザーに割り当ててからクエリを再実行します。

+0

ありがとう。今私の問題は解決されました!感謝!!! – manxing

1

そのユーザー(user_idが1)を使用している別のテーブルがあり、usersテーブルからユーザーを削除する前にその行を削除する必要があります。

+0

をカスケード参照アクションをDELETE ONで新しい外部キーを追加ドロップこの回答を得るのに十分に速い:P – Shaded

1

外部キー制約を持つ行を参照するテーブルがあります(医師の前提)。ユーザーを削除するには、まず医者を削除する必要があります。または、外部キー制約にon deleteカスケードを追加します。

0

これは、別のテーブルにこのテーブルへの外部キーリンクがあることを意味します。別のテーブルがこのユーザーを参照しているため、ID 1のユーザーを削除することはできません。

1

エラーはあなたに答えを与えています。削除しようとしているテーブルと他のテーブルとの間に参照整合性のリンクがあります。孤児を残して親の行を誤って削除しないようにするための制約がありました。

医者が常にユーザーである場合。その後、ユーザーレコードを持たない医師を残してユーザーを削除することはできません。

0

これは、テーブル内の行を削除するテーブル内のファイル( 'user_id')を参照する外部キー( 'users_ibfk_2')を既に作成しているためです。 しかし(あなたはphpMyAdminのを使用している場合)ので、より良い解決策がある 、あなたがそう外部キーが良い解決策ではありません削除する外部キーを作成したとして:

  1. 子テーブル
  2. を選択する選択 "構造deletiによって今CASCADE 『

『に 『[行に対応する

  • 変化(DELETE ON)2番目のドロップダウンリスト』 doctor_id]』リレーションビュー」タブ
  • に行きます』親表の行を削除すると、子表の対応する行が削除されます。

    あなたはphpMyAdminをを使用していない場合:

    1. 外部キーは私が入力していなかった知られている必要があります代わりに
  • 関連する問題