インデックス '*' を削除できません: 必須 -> 外部キー制約内ですが、どれですか?
P粉155710425
P粉155710425 2024-03-25 23:27:49
0
2
394
######コンテクスト###

テーブルから行を削除するときに問題が発生しました。

これらのクエリを使用して、まず外部キーを削除し、次にキーが指す列を削除します。

リーリー

制約を削除するとうまくいきます。列の削除は、「

インデックス 'fk_res_to_addr' は削除できません: 外部キー制約で必要です」というエラーで失敗します。

これまでに試したこと 私は最初に、そのインデックスにまだ依存しているものを見つけようとしました (そして今でも試しています)。このクエリを使用しました(この回答で見つかりました):

リーリー

しかし、そこには何もありません。

次に、チェックを無効にしてみました:

リーリー

もちろん、その後、再度有効にします。これも効果はありません。

このインデックスに何が依存しているかを把握するために他にできることはありますか?何かが足りないのでしょうか?

** 編集 - 要求されたテーブル定義** これは現在のテーブル定義です。ご覧のとおり、address_id には外部キーが追加されましたが、インデックスはまだ存在しています。 ああああ

P粉155710425
P粉155710425

全員に返信(2)
P粉145543872

もしよろしければ試してみてください

リーリー

fk_res_to_addr' が実際に削除されたかどうかがわかる場合があります。

いいねを押す +0
P粉068510991

これまでこの問題に遭遇したことはありませんが、非常にひどいので、mysql のバグがあるのではないかと疑っています。 mariadb「だけ」で動作します。

エラー Can't DROP 'fk_res_to_addr'; 列/キーが存在するかどうかを確認し、報告したエラーが表示されるはずです - https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=c5b0bbc9d6c12f74e00ba8d059a15638# を参照してください。

##作成時に、mysql は、fk に割り当てた名前を使用してインデックスを作成し、独自の名前を fk に割り当てます。結果は、上記のエラーと

https://dbfiddle.uk/?rdbms=mysql_5 です。 7&fiddle=c5b0bbc9d6c12f74e00ba8d059a15638

キー、外部キー、列の順に削除してみることをお勧めします。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート