削除出来ない
usersテーブルのtextカラムにindexを以下のように貼った時、
$table->index('text');
削除を以下のようにして php artisan migrate:rollback
を実行すると。
$table->dropIndex('text');
PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'text'; check that column/key exists")
怒られる。
なぜ
laravelはindex名は命名規則に基づいて定められる。
例
'users_id_primary' // 主キー
'users_email_unique' // ユニークキー
'users_name_index' // 基本インデックス
'users_location_spatialindex' // 空間インデックス
なので、今回の場合はindex名は users_text_index
となっている。
そういうindexは無いので怒られる。
解決
消したいindexが貼ってあるカラム名を配列にして入れることで、命名規則に従ったindexが削除される。
$table->dropIndex(['text']);