#解決したいこと
外部キー制約を削除したときに、データベースに外部キーのキー名が残ってしまうので、キー名が削除されるようにしたい。
外部キー制約削除のマイグレーションを実行しても、以下のようにキー名が残ってしまう。
#開発環境
PHP 7.4
laravel6
mariaDB
phpmyadmin
#詳細
外部キーがあるテーブルがあり、外部キーが必要なくなったので、以下のように外部キー制約を解除しました。ただし、継続してカラムは必要です。
public function up() { Schema::table('posts', function (Blueprint $table) { // 外部キー制約の削除 $table->dropForeign('posts_book_id_foreign'); $table->dropForeign('posts_category_id_foreign'); }); } public function down() { Schema::table('posts', function (Blueprint $table) { // 外部キー制約の追加 $table->foreign('book_id')->references('book_id')->on('books')->OnDelete('cascade'); $table->foreign('category_id')->references('category_id')->on('categories')->OnDelete('cascade'); }); } }
#試したこと
データベースで外部キー制約が解除されているかどうか確認したところ、確かに外部キー制約は解除されていました。
※データベースから直接値を挿入する際に、外部キー制約があるとプルダウンになるが、上記を実行すればプルダウンがなくなり自由に数値を入力できるから。
#問題
外部キー制約は解除できるけれど、インデックス欄にあるキー名が残ったままでなんか気持ち悪いです。
例:キー名:posts_book_id_foreign、ユニーク:いいえ、一意な値の数:2
それと、book_idとcategory_idカラムの横にも銀のカギマークがついたままです。
どうすれば外部キー制約解除した後にキー名も削除できますか?
それともdropForeignしたところで、データベースの外部きー名が消えるわけではないのですか?
あなたの回答
tips
プレビュー