問題タブ [mysql-error-1451]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - ON DELETE CASCADE制約はどのような順序で処理されますか?
これが私が行っていることの例です:
Uncle-Child関係にはONDELETECASCADEがないことに注意してください。つまり、子を削除してもその叔父は削除されません。その逆も同様です。
親と同じ子を持つ叔父がいて、親を削除すると、InnoDBは「それを理解」して、家族全体にカスケードを波及させることができるはずです(つまり、親を削除すると叔父が削除されます)と子供も)。ただし、代わりに、次のようになります。
InnoDBは、子を参照する叔父の前に子をカスケード削除しようとしています。
私は何かが足りないのですか?どういうわけかわからないので失敗するのでしょうか?それとも、それを機能させるためのトリックがありますか(またはMySQLのバグですか)?
mysql - Zend Framework - データベース テーブルの再帰的なカスケード削除に関する問題
私の状況は少し異常かもしれませんが、MySQL データベースに外部キーを定義し、Zend_Db_Table
クラスの参照整合性を強制しています。テーブルは InnoDB ストレージ エンジンを使用します。
$_referenceMap
レコードを削除する場合、Zend Framework はテーブル モデルの を介して直接の子を適切に識別し、それらを削除します。ただし、直接の子の子が存在する場合、その外部キーの参照整合性に違反しているというエラーがデータベースから返されます: SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails
. Zend_Db_Table_Abstract
は、再帰的な方法で参照整合性を強制していないようです。
他の誰かがこれに遭遇しましたか?それはZend Framework のバグですか? 回避策?修正?
アップデート
Nearly a week later and I have no replies to this question. I am thinking I'll have to extend the Zend_Db_Table_Row_Abstract
class myself to accomplish this.
sql - 親行を削除または更新できない - JPA with Hibernate
すべてのテーブルが Java JPA/Hibernate コードによって生成されたデータベースがあります。これと同様の方法で、データベース内のいくつかのテーブルを更新する必要があります。
残念ながら、これはエラーになります
エラー 1451 (23000): 親行を削除または更新できません: 外部キー制約が失敗しました (departmentuserlink, CONSTRAINT FK96AF44EAB09C41C5 FOREIGN KEY (department_id) REFERENCES department (id))
Java エンティティは次のとおりです。
どちらもスーパークラスに ID があります。これまでのところ、部門の主キーの更新で問題が発生しただけで、それらに関する他のすべてがうまく機能しているように見えます。アドバイスをいただければ幸いです。ありがとう。
mysql - データベースの外部キーの問題
私はソーシャルネットワーキングサイトを作成していて、友達のテーブルに取り組んでいますが、何が間違っているのかわかりません。
users
(userId, name - userId は主キー) と (friend1, friend2, status) という別のテーブルがありますfriends
。friend1
および更新および削除時friend2
の外部キーはuserId
、カスケード テーブル ユーザーに設定され、ID として 134 のエントリがあり、3 に変更したいと考えています。friends テーブルには、値が 143 の行が 2 つあります。134 を 3 に変更すると、更新時にカスケードし、フレンド テーブルの値も変更されるべきではありません。このエラーが発生しています
1451 - 親行を削除または更新できません: 外部キー制約が失敗しました ( modionz1_nightspot/friends
, CONSTRAINT friends_ibfk_1
FOREIGN KEY ( friend1
) REFERENCES users
( userId
))
ちなみに、両方のテーブルはinnodbです。これらの概念に関するヘルプは大歓迎です。
mysql - GrailsGORMおよびMYSQLカスケード削除の問題
静的hasManygrailsの下のUserクラスで定義された多くの子テーブルを持つテーブルUserがあります。
grailsでUser.get(3).delete()を実行しても問題ありません。そのユーザーとそのすべての子テーブル行を自動的に削除します。しかし、MySQLワークベンチで同じ操作を実行したい場合。MySQLによってエラーがスローされます:
ここでMySQLの問題が何であるかわかりません。
sql - テーブルの行を削除できません(MySQL)
親愛なる皆さん、MySQLに問題がDELETE FROM users where user_id ='1';
あります。MySQLCLIで実行できませんでした。だから私はphpMyAdminで試しました:GUIを使用して行を削除します、私はこれを手に入れました:
SQLクエリ:
MySQLによると:ドキュメント
Mysql Webサイトでこのエラーを調べたところ、次のようになりました。エラー:1451 SQLSTATE:23000(ER_ROW_IS_REFERENCED_2)
メッセージ:親行を削除または更新できません:外部キー制約が失敗しました(%s)
ここで何が悪いのかわかりません。誰かが私に注意を向けてくれることを願っています。
多くのthx!
mysql - mysql エラー 1451
コード 1451 の mysql エラーが発生しました。
親行を削除または更新できません: 外部キー制約が失敗しました (
online_store_admin
.osa_admin_logs
, CONSTRAINTfk_admins_logs
FOREIGN KEY (aid
) REFERENCESosa_admins
(aid
))
ここでSQL文:
/blockquote>このステートメントを使用すると問題が発生します。
osa_admins where aid='2'; から削除します。「カスケード削除」を設定したと思います。カスケードを削除する方法を知っている人はいますか? そのため、osa_admin_logs データを手動で削除する必要はありません。ああ、私はinnodbをdbエンジンとして使用しています(私が持っているデフォルトのmysql)。
申し訳ありませんが、回答があったのと同じ質問をします。質問を入手できる場所を教えてください。
ありがとうございました。
sql - エラー 1451: 親行を削除または更新できません: 外部キー制約が失敗しました
したがって、このテーブルは、ID と自己参照型の親 ID を持つカテゴリを表します。カテゴリ cat1 と、親 ID が cat1 のサブカテゴリ cat1_child を挿入しました。
ここで、cat1 の idcategory を 1 から 10 に変更できるようにしたいと考えています。更新 CASCADE で外部キーを設定したため、cat1_child の idparent も 10 に設定されることを期待しています。しかし、私がするとき:
エラーが発生します:
エラー 1451: 親行を削除または更新できません: 外部キー制約が失敗しました (
categories
, CONSTRAINTFK_idparent
FOREIGN KEY (idparent
) REFERENCEScategories
(idcategories
) ON DELETE CASCADE ON UPDATE CASCADE) SQL ステートメント: UPDATEcategories
SETidcategories
=10 WHEREidcategories
='1'
代わりに、削除は期待どおりに機能し、cat1 を削除すると、cat1_child も削除されます。
エラーはどこにありますか? あなたより。
mysql - エラー コード: 1451 (主キーが 2 つ)
次のステートメントを実行できません。
私が得るので:
テーブルがあります:
このクエリを実行してテーブルの内容を表示すると、次のようになります。
ご覧のとおり、「my_id」と「upgrade_time」の両方がキーであり、削除したい行は子テーブルに存在しません。これは別の時間であるためです。
ここで何が問題なのですか?
ありがとう!