【Laravel】migrationでカラム変更の際にハマったこと
概要
eventsテーブルのevent_remarksカラムの型変更を行った。
string型->text型に変更するようマイグレーションファイルに記載。
動作環境
Laravel5.5
PHP7.1
mysql5.5.6
ハマった箇所
- migrateをした際に以下のようなエラーが発生。
SQLSTATE[42000]: Syntax error or access violation: 1170 BLOB/TEXT column 'event_remarks' used in key specification without a key length (SQL: ALTER TABLE ev ents CHANGE event_remarks event_remarks TEXT DEFAULT NULL COLLATE utf8mb4_unicode_ci)
原因
- event_remarksカラムにindexを設定していたことが原因。
解決策
public function up() { Schema::table('events', function (Blueprint $table) { $table->dropIndex('events_event_remarks_index'); });
何故ハマったのか
Laravelのリファレンスをきちんと読んでいなかったこと。型変更の際に、changeメソッドでindexを指定しなければindexが消えると思い込んでいた。
該当カラムにindexがはっているかどうかをmysqlで確認しなかった。 以下コマンドでtbl_nameにindexが設定されているカラムが確認できる。
SHOW INDEX from tbl_name;