1

親愛なる皆さん、MySQLに問題がDELETE FROM users where user_id ='1';あります。MySQLCLIで実行できませんでした。だから私はphpMyAdminで試しました:GUIを使用して行を削除します、私はこれを手に入れました:

SQLクエリ:

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`)) 

Mysql Webサイトでこのエラーを調べたところ、次のようになりました。エラー:1451 SQLSTATE:23000(ER_ROW_IS_REFERENCED_2)

メッセージ:親行を削除または更新できません:外部キー制約が失敗しました(%s)

ここで何が悪いのかわかりません。誰かが私に注意を向けてくれることを願っています。

多くのthx!

4

6 に答える 6

7

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

于 2010-12-17T17:46:24.880 に答える
1

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

于 2010-12-17T17:45:28.303 に答える
1

外部キー制約を使用してその行を参照するテーブル(私が想定する医師)があります。ユーザーを削除するには、最初に医師を削除する必要があります。または、外部キー制約に削除時カスケードを追加します。

于 2010-12-17T17:45:31.987 に答える
1

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

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

于 2010-12-17T17:46:04.707 に答える
0

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

于 2010-12-17T17:45:53.703 に答える
0

その理由は、行を削除するテーブル内のフィールド('user_id')を参照する外部キー('users_ibfk_2')をすでに作成しているためです。ただし、外部キーを作成したため、外部キーを削除することは適切な解決策ではないため、より適切な解決策は次のとおりです(phpmyadminを使用している場合)。

  1. 子テーブルを選択します
  2. [構造]タブを選択します
  3. 「リレーションビュー」に移動します
  4. 2番目のドロップダウンリスト(ON DELETE)['doctor_id'に対応する行]を'CASCADE'に変更します

これで、親テーブルの行を削除すると、子テーブルの対応する行が削除されます。

phpmyadminを使用していない場合:

  1. 外部キーをドロップします
  2. 代わりに、ONDELETEカスケード参照アクションを使用して新しい外部キーを追加します
于 2014-02-06T08:23:48.397 に答える