テーブルから行を削除するときに問題が発生しました。
リーリー
制約を削除するとうまくいきます。列の削除は、「インデックス 'fk_res_to_addr' は削除できません: 外部キー制約で必要です」というエラーで失敗します。
これまでに試したこと
私は最初に、そのインデックスにまだ依存しているものを見つけようとしました (そして今でも試しています)。このクエリを使用しました(この回答で見つかりました):
次に、チェックを無効にしてみました:
リーリーもちろん、その後、再度有効にします。これも効果はありません。
このインデックスに何が依存しているかを把握するために他にできることはありますか?何かが足りないのでしょうか?** 編集 - 要求されたテーブル定義** これは現在のテーブル定義です。ご覧のとおり、address_id には外部キーが追加されましたが、インデックスはまだ存在しています。 ああああ
もしよろしければ試してみてください
リーリーfk_res_to_addr' が実際に削除されたかどうかがわかる場合があります。
これまでこの問題に遭遇したことはありませんが、非常にひどいので、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。
キー、外部キー、列の順に削除してみることをお勧めします。