migrate:status
対象名: migrate:status
カテゴリ: artisan
種類: コマンド
掲載バージョン: Laravel 12・PHP 8.4
FQCN / コマンド: php artisan migrate:status
関連API: migrate, migrate:rollback, migrate:refresh, migrate:install
変更履歴: Laravel 12 以降は仕様変更なし(古いバージョンと同一)
TL;DR
- 何に使うか: データベースマイグレーションの適用状況を一覧表示
- 最低限の使い方:
php artisan migrate:status
- 注意点
- DB 接続設定が正しくないとエラー
- マイグレーションテーブルが無いと「Unknown column」エラー
- 環境変数が異なると実際の状態を確認できない
概要
migrate:status は database/migrations にあるマイグレーションファイルごとに「適用済みか否か」を示すテーブルを標準出力します。開発ブランチ間で差分を確認したり、デプロイ前にマイグレーションが漏れていないかチェックする際に重宝します。
構文 / シグネチャ
php artisan migrate:status
引数
| 引数 |
型 |
必須 |
既定値 |
説明 |
| なし |
|
|
|
このコマンドはオプションを受け取りません。 |
戻り値
| Migration | Batch |
|-------------------------------------------|-------|
| 2023_07_15_123456_create_orders_table | 5 |
| 2023_07_15_123457_create_payments_table | 6 |
| 2023_07_16_000000_add_status_to_users | 7 |
例外 / 副作用
| 例外 |
影響 |
対応 |
Illuminate\Database\QueryException |
DB 接続失敗時に投げられます |
config/database.php を確認、.env を正しく設定 |
| なし |
何も生成・削除しません |
migrations テーブルのみ参照 |
使用例
最小例
$ php artisan migrate:status
実務例
# チームと同期後に状態を確認
$ git pull origin develop
$ php artisan migrate:status
# 出力例
| Migration | Batch |
|-------------------------------------------|-------|
| 2023_07_15_123456_create_orders_table | 5 |
| 2023_07_15_123457_create_payments_table | 6 |
| 2023_07_16_000000_add_status_to_users | 7 |
追加確認例
# 「down」状態のマイグレーションだけをリストアップ
$ php artisan migrate:status | grep 'down'
よくある落とし穴・注意
| 症状 |
原因 |
対処 |
Could not find driver |
PDO ドライバ未インストール |
docker-php-ext-install pdo_mysql 等でインストール |
Unknown column 'migration' |
migrations テーブルが存在しない |
php artisan migrate:install で作成 |
Command "migrate:status" is not defined. |
Artisan が読み込まれていない |
composer dump-autoload で再読み込み |
| 本番環境と混同 |
.env が異なる |
本番用 .env をロードして実行 |
代替・関連APIとの比較
| 手段 |
特徴 |
いつ選ぶか |
php artisan migrate:status |
テーブル形式で直感的 |
全マイグレーションの状態を一目で確認したい |
DB::table('migrations')->get() |
カスタムクエリで柔軟 |
追加情報(実行時刻など)が必要 |
php artisan migrate:show (非公式) |
実際の SQL を表示 |
実行前に SQL を確認したい |
テスト例(Pest)
use Illuminate\Support\Facades\Artisan;
it('displays migration status', function () {
// まずマイグレーションを適用
Artisan::call('migrate', ['--force' => true]);
$output = Artisan::output();
expect($output)->toContain('Migration');
expect($output)->toContain('Batch');
});
トラブルシューティング
| エラー |
原因 |
解決策 |
Could not find driver |
PHP に PDO ドライバが無い |
php -m | grep pdo_mysql で確認し、必要に応じてインストール |
Unknown column 'migration' in 'field list' |
migrations テーブルが作成されていない |
php artisan migrate:install でテーブルを作る |
ErrorException: Call to undefined method |
Artisan コマンドが認識されない |
composer dump-autoload 後、サーバー再起動 |
| 出力が空 |
マイグレーションが存在しないか、接続が失敗している |
php artisan migrate:install でテーブル作成、.env の設定確認 |
参考リンク