3

コード 1451 の mysql エラーが発生しました。

親行を削除または更新できません: 外部キー制約が失敗しました ( online_store_admin. osa_admin_logs, CONSTRAINT fk_admins_logsFOREIGN KEY ( aid) REFERENCES osa_admins( aid))

ここでSQL文:

osa_admins; 存在する場合はテーブルをドロップします。
存在しない場合はテーブルを作成する osa_admins(
 int unsigned not null auto_increment を支援します。
 uid varchar(50) がヌルではありません。
 null 以外の char(41) を渡します。
 erp_id int unsigned not null,
 last_login int unsigned not null,
 is_block tinyint unsigned not null,
 メニュー varchar(50) が null ではない、
 is_login tinyint unsigned not null,
 ip_login char(15) ヌルではない、

 btree(aid) を使用した制約 idx_osa_admins 主キー
);
osa_admins 値に挿入
(NULL, 'ルート', パスワード('6789'), '0', '0', '0', '*', '0', '127.000.000.001'),
(NULL, 'ryu', password('6789'), '0', '0', '0', '*', '0', '127.000.000.001');

osa_admin_logs が存在する場合はテーブルをドロップします。
存在しない場合はテーブルを作成する osa_admin_logs(
 ふた bigint unsigned not null,
 int unsigned not null を支援します。
 日付 int unsigned not null,
 null でないテキストをログに記録し、

 btree(lid) を使用した制約 idx_osa_admin_logs 主キー、
 制約 fk_admins_logs 外部キー (補助)
  参照 osa_admins(aid)
  マッチフル
  更新カスケードで
  カスケード削除時
);
osa_admin_logs 値に挿入
(NULL, '2', '0', 'アクションがここにある'),
(NULL, '2', '0', '再び、ここでなんらかのアクション');

このステートメントを使用すると問題が発生します。

osa_admins where aid='2'; から削除します。

「カスケード削除」を設定したと思います。カスケードを削除する方法を知っている人はいますか? そのため、osa_admin_logs データを手動で削除する必要はありません。ああ、私はinnodbをdbエンジンとして使用しています(私が持っているデフォルトのmysql)。

申し訳ありませんが、回答があったのと同じ質問をします。質問を入手できる場所を教えてください。

ありがとうございました。

4

2 に答える 2

8

match fullを制約から削除します

明示的な MATCH 句を使用しても指定された効果は得られず、ON DELETE および ON UPDATE 句も無視されます。これらの理由から、MATCH の指定は避ける必要があります。

MySql ドキュメントhttps://dev.mysql.com/doc/refman/8.0/en/create-table.html

于 2010-12-22T02:38:37.723 に答える