dropColumnするつもりでdropしたらテーブルを消そうとしてびっくりした
原因
dropColumn
するべきところで drop
をしていた.
リファレンス
存在するテーブルを削除する場合は、dropかdropIfExistsメソッドを使います。
コードとエラー
// 正しいコード Schema::connection($this->connection)->table('tableName', function (Blueprint $table) { $table->dropColumn('createdAt'); $table->dropColumn('updatedAt'); }); // 間違ってるコード Schema::connection($this->connection)->table('tableName', function (Blueprint $table) { $table->drop('createdAt'); $table->drop('updatedAt'); });
- エラーの内容
[Illuminate\Database\QueryException] SQLSTATE[42S02]: Base table or view not found: 1051 Unknown table 'databaseName.tableName' doesn't exist (SQL: drop table `products`)
唐突の drop table
😱
エラーにならなかったら恐ろしいことになってしまう.
ここで一番怖いと思ったことが, $table->drop('ココ')
で指定しているのがテーブル名でなくカラムなのに $table
で指されているテーブルを消そうとしていたこと.
「タイポでした〜😂」じゃすまないっすよ...
ちなみに,phpは関数の引数の数が合ってなくても動くので、$table->drop(‘カラム名’)
と書いても死なずに $table->drop()
と同等の動作をするためこのようなことになったと推測...