migrate:reset — マイグレーションをリセットするコマンド
artisan
2026.03.08
laravel artisan コマンド: migrate:reset
一言概要
カテゴリ : artisan
バージョン : Laravel 12
名前空間 / FQCN / コマンド : php artisan migrate:reset
関連 : migrate:refresh, migrate:rollback, migrate:status, db:wipe, migrate
変更履歴
2014‑08‑24: Laravel 4.1 で追加
2015‑04‑01: Laravel 5.0 で正式サポート
2020‑04‑15: Laravel 6.0 でマイグレーションフレームワーク更新
2023‑06‑01: Laravel 9.0 で --pretend オプションを追加
2025‑02‑10: Laravel 12 で --realpath が自動認識に統合
TL;DR
目的 : すべてのマイグレーションをロールバックし、データベースを初期状態に戻す。
最低限の実行 : php artisan migrate:reset
注意点
全テーブルが削除され、データは失われる。
本番環境では --force が必須。
--path を使えば特定ディレクトリのみを対象にできる。
概要
migrate:reset は、現在のデータベースを「クリーンな状態」にリセットします。
開発中にテーブル構造を頻繁に変更する際や、テストデータを再投入する前に使用します。
構文 / シグネチャ
php artisan migrate:reset
{--database= : The database connection to use}
{--path= : The path to the migrations}
{--pretend : Dump the SQL queries that would be run}
{--force : Force the operation to run when in production}
{--realpath : Indicates that the given path is a full path}
オプション表
オプション
型
必須
既定値
説明
database
string
いいえ
null
使用する DB 接続名
path
string
いいえ
null
マイグレーションファイルへの相対/絶対パス
pretend
bool
いいえ
false
SQL を出力するだけで実行しない
force
bool
いいえ
false
本番環境での実行許可
realpath
bool
いいえ
false
path がフルパスであることを示す
戻り値
void(コンソールに出力するのみ)
例外 / 副作用
RuntimeException : マイグレーションファイルが見つからない時などに投げられる。
データ損失 : すべてのテーブルが削除され、データは失われる。
pretend モード : 実際には変更が行われないが、SQL を表示するだけ。
使用例
最小例
php artisan migrate:reset
実務例
# 開発環境でマイグレーションをリセットし、テストデータを再投入
php artisan migrate:reset
php artisan db:seed
よくある落とし穴
データの完全消失 :必ずバックアップを取得すること。
本番環境 :--force が付与されていないと実行できない。
マルチデータベース :--database を指定しないとデフォルト接続が使われる。
パス指定 :--path で指定したディレクトリにあるマイグレーションのみが対象になる。
代替 / 関連 API
API
主な違い
選択基準
migrate:refresh
reset + migrate を連続で実行
すべてのマイグレーションをやり直したい
migrate:rollback
直近のバッチだけをロールバック
最近の変更だけを取り消したい
db:wipe
すべてのテーブルをドロップ
マイグレーション無しで完全に空にしたい
migrate
新しいマイグレーションだけを実行
新規変更のみ適用したい
テスト例(Pest)
use Illuminate\Support\Facades\DB;
it('resets all migrations', function () {
// Arrange
DB::statement('CREATE TABLE test (id INT)');
// Act
$output = $this->artisan('migrate:reset');
// Assert
$tables = DB::select('SHOW TABLES LIKE "test"');
expect($tables)->toBeEmpty();
});
トラブルシュート(エラー別)
エラー
原因
対処
Could not find a migration path
--path が無効
パスを再確認し、正しいディレクトリを指定
SQLSTATE[HY000]
データベース接続失敗
.env の DB_* 設定を確認
Command cannot run in production
--force が不足
本番で実行する場合は --force を付与
参考リンク