ララベルのマイグレーション コマンド
Laravel Migration コマンドまとめ - Qiita
.env を データベース操作権限のあるユーザに変えてから実行
マイグレーション実行
$ php artisan migrate
実行時に発行されるクエリを表示するのみで、実際にマイグレーションはしない
$ php artisan migrate --pretend
マイグレーション状況を出力
$ php artisan migrate:status
Laravel入門 これだけ読んどけ! マイグレーションを理解する | Pllogg
ロールバック
php artisan migrate:rollback
マイグレーションを1つ手前の状態に戻します。
アンドゥみたいな感じです。
【laravel】マイグレーション、やり直しコマンドいろいろ - Qiita
マイグレーションファイルは一度実行すると、もう実行できない。
再度実行するには、 一度ロールバックが必要。
2回ロールバックする場合
$ php artisan migrate:rollback --step=2
ロールバックすると、downの処理をするらしい
カラムを追加する場合は、 --table オプション で、migrationファイルを新たに作る
エラー発生
$ php artisan migrate --pretend
RuntimeException
Changing columns for table "XXXXXXXXXX" requires Doctrine DBAL. Please install the doctrine/dbal package.
以下で解決
$ composer require doctrine/dbal
Changing columns for table "hogehoges" requires Doctrine DBAL; install "doctrine/dbal". - Qiita
エラー発生
$ php artisan migrate
Illuminate\Database\QueryException
SQLSTATE[42000]: Syntax error or access violation: 1142 ALTER command denied to user
DB接続ユーザに権限が無いため。
実行手順
envを編集して、DB編集権限のあるユーザに変更。
php artisan config:cache
php artisan migrate:status
php artisan migrate --pretend
php artisan migrate
envを元に戻す
php artisan config:cache
ファイルを指定して実行
php artisan migrate --pretend --path=database/migrations/2021_xxxxx.php
誤って実行したマイグレートを戻したい場合
マイグレーションを実行した時から変化がないファイル状態で実行すること
php artisan migrate:status
php artisan migrate:rollback --pretend
php artisan migrate:rollback
php artisan migrate:status
マイグレーションファイルを正しい値に修正
通常通りマイグレーションを実行
参考 対象ファイルを指定する場合
php artisan migrate:rollback --step=2 --pretend
php artisan migrate:rollback --pretend --path=database/migrations/2021_xxxxx.php
php artisan migrate:rollback --step=5 --path=database/migrations/2021_xxxxx.php --pretend
--stepで指定する数値は、--pathで指定するファイルが存在する箇所まで合算して指定する必要がある。
10回前のマイグレーションを1ファイルrollbackしたい場合は、stepに10以上の数値を指定して、pathに特定のファイルを指定すると、1ファイルだけrollbackできる。
マイグレート中もテーブルロックは掛からず、マイグレーションが実行できた。
1000万レコードに対するindex追加が約2分だった。
その間、update、insertともに遅延なく実行可能だった。
(Laravel) migrationやり直しコマンドあれこれ | hara-chan.com