php artisan migrate:rollback した時や、php artisan migrate:reset した時に、以下のエラーが出て数時間ハマってしまいました。
PHP Fatal error: Class 'Doctrine\DBAL\Driver\PDOSqlite\Driver' not found in /Users/who/Code/blog/vendor/laravel/framework/src/Illuminate/Database/SQLiteConnection.php on line 46 PHP Stack trace: PHP 1. {main}() /Users/who/Code/blog/artisan:0 PHP 2. Illuminate\Foundation\Console\Kernel->handle() /Users/who/Code/blog/artisan:36 ... ...
マイグレーションファイルの dropColumn() を使っている所でエラーが発生している模様。
<?php // database/migrations/2015_02_22_170916_add_published_at_to_articles_table.php // ... class AddPublishedAtToArticlesTable extends Migration { public function up() { Schema::table('articles', function(Blueprint $table) { $table->timestamp('published_at')->nullable(); }); } public function down() { Schema::table('articles', function(Blueprint $table) { $table->dropColumn('published_at'); // ここでエラーが発生 }); } }
いろいろググって調べた所、composer で “doctrine/dbal” パッケージを追加する必要があるとのことでした。
composer require doctrine/dbal
これで、migrate:rollback も migrate:reset も動くようになりました。
よくよく、公式サイトの Schema Builder ページを見てみると、 Dropping Columns の所にチョコっと書いてありました。
http://laravel.com/docs/5.1/migrations#dropping-columns
https://laravel.com/docs/5.6/migrations#modifying-columns
だけど…
マイグレーション機能があって、ロールバック出来るようになっているのだから、Laravelをインストールして、composer install した時点で “doctrine/dbal”もインストールされるべきだと思うんだけど…
なんで、laravel のcomposer の依存関係に入ってないんだろう?釈然としない気持ち