検索

ホームページ  >  に質問  >  本文

インデックス '*' を削除できません: 必須 -> 外部キー制約内ですが、どれですか?

######コンテクスト###

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

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

リーリー

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

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

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

リーリー

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

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

リーリー

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

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

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

P粉155710425P粉155710425291日前459

全員に返信(2)返信します

  • P粉145543872

    P粉1455438722024-03-26 20:06:21

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

    リーリー

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

    返事
    0
  • P粉068510991

    P粉0685109912024-03-26 16:29:38

    これまでこの問題に遭遇したことはありませんが、非常にひどいので、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
  • キャンセル返事