DBを直接削除しただけでは、マイグレーションはうまく動かない

  • 44
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

最初からマイグレーションし直したくて、直接DBを削除してしまった場合に、
以下のようにうまく動作しない。

shell
$ php oil r migrate
Already on the latest migration for app:default.

DBにあるmigrationテーブルがないので、
直感的にうまくいきそうだけどうまくいかない。

なぜなら、DBのmigrationテーブルの他に、
以下のファイルにもマイグレーション情報が記述されているから。

fuel/app/config/development/migrations.php
<?php
return array(
    'version' => 
    array(
        'app' => 
        array(
            'default' => 
            array(
                0 => '001_create_customer',
                1 => '002_create_users',
            ),
        ),
        'module' => 
        array(
        ),
        'package' => 
        array(
            'auth' => 
            array(
            ),
        ),
    ),
    'folder' => 'migrations/',
    'table' => 'migration',
);

version.app.defaultの部分を空にする必要がある。

fuel/app/config/development/migrations.php
<?php
return array(
    'version' => 
    array(
        'app' => 
        array(
            'default' => 
            array(
            ),
        ),
        'module' => 
        array(
        ),
        'package' => 
        array(
            'auth' => 
            array(
            ),
        ),
    ),
    'folder' => 'migrations/',
    'table' => 'migration',
);

この編集をした後に、マイグレーションコマンドを実行すれば正常に完了する。

そもそも最初からやり直したい場合は、
直接DBを削除するのではなくて、
以下のマイグレーションコマンドを実行したほうが良い。

shell
$ php oil r migrate:down -v=0