LaravelのMigrationコマンド

ララベルのマイグレーション コマンド

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の処理をするらしい

 

Laravel:カラムを追加する - Qiita

カラムを追加する場合は、 --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