artisan migrate で dropColumnがエラーになりハマる

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

だけど…
マイグレーション機能があって、ロールバック出来るようになっているのだから、Laravelをインストールして、composer install した時点で “doctrine/dbal”もインストールされるべきだと思うんだけど…
なんで、laravel のcomposer の依存関係に入ってないんだろう?釈然としない気持ち

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中