laravelで外部キー制約を外す「drioForeign」が実行できずに困っています。
・状況
下記qiitaの記事と全く同じ状況です。
Laravel で外部キー制約の onDelete / onUpdate をマイグレーション後に設定する + 論理削除でハマったこと
つまり、onDeleteオプションを付けずに外部キー制約を設定してしまったため、一旦外部キー制約を外して設定し直したいのです。
公式リファレンスにもdropForeignの中に「'テーブル名_カラム名_foreign'」を入れることで解除できると書いてありました。
使用しているlaravelver5.8のリファレンス
ですが、実際にmigrationファイルを作って実行しようとしてもエラーが出て実行できませんでした。
エラー画面↓
実際にテーブルをshow indexしてmigrationファイル内の記述と比較しました。
カラムの詳細↓
migrationファイル内のコード↓
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class ChangeDrillsDropForeignCategoryId extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('drills', function (Blueprint $table) { $table->dropForeign('drills_cateory_id_foreign'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('drills', function (Blueprint $table) { // }); } }
・その他思い当たる点
drillsのcategory_idの外部制約先であるcateoriesテーブルですが、
外部制約を設定した当初は「caterorys」 という名前でした。
その後laravelが発行するSQLの関係で「categories」にリネーム。
・やったこと
外部制約の解除のためには「categories」(現在のテーブル名)から「categorys」(外部制約設定時のテーブル名)に戻すべきかと思い、リネームで名称を戻してdropForeignを試してみました。
が、これでもエラーが出て実行できず。
以上、長文になりすみませんが、アドバイスいただけますと助かります!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。