もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

laravelのマイグレーションsquash試す。

はじめに

こんばんは。

今回はlaravelのマイグレーションsquashを試してみました。

readouble.com

マイグレーションの圧縮 アプリケーションを構築していくにつれ、時間の経過とともに段々と多くのマイグレーションが蓄積されていく可能性があります。これにより、database/migrationsディレクトリが数百のマイグレーションで肥大化する可能性があります。必要に応じて、マイグレーションを単一のSQLファイルに「圧縮」できます。利用するには、schema:dumpコマンドを実行します。

本題

とりあえず現在の状況はこんな感じです。

# php artisan migrate:status
+------+-------------------------------------------------------------+-------+
| Ran? | Migration                                                   | Batch |
+------+-------------------------------------------------------------+-------+
| Yes  | 2022_07_03_000001_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_115334_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_002226_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_162746_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_173628_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_145946_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_171927_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_231312_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_150115_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_232721_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_123222_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_000000_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_125829_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_130608_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_163742_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_182736_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_115056_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_111118_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_205804_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_180337_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_152910_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_201730_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_201142_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_150301_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_140639_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_140717_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_165047_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_171820_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_160136_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_160253_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_162213_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_234404_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_100606_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_100645_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_145901_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_013828_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_165741_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_101855_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_152852_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_190354_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_190424_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_155606_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 1     |
| Yes  | 2022_07_03_145650_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 2     |
| Yes  | 2022_07_03_145821_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 2     |
| Yes  | 2022_07_03_170137_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 4     |
| Yes  | 2022_07_03_104338_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | 3     |
+------+-------------------------------------------------------------+-------+

実行するコマンドはこちら

$ php artisan schema:dump

ダンプを取りつつ現在のマイグレーションファイルを削除してしまうコマンドはこちら

$ php artisan schema:dump --prune

今回は、後者のコマンドを実行します。

# php artisan schema:dump --prune
Database schema dumped successfully.
Migrations pruned successfully.

実際にマイグレーションファイルが削除されているか確認します。

# ls -la database/migrations 
ls: database/migrations: No such file or directory

ディレクトリごとなくなっています。 では、取得したdumpファイルがどこにあるかというと

# ls database/schema/
mysql-schema.dump

migrations というディレクトリが削除されて schema というディレクトリが作成されて、その下に配置されています。

そしてDBの再構築をしてみます。

# php artisan migrate:fresh
Dropped all tables successfully.
Migration table created successfully.
Loading stored database schema: /path/to/database/schema/mysql-schema.dump
Loaded stored database schema. (159.91ms)
Nothing to migrate.

ダンプしたファイルが読み込まれています。

終わりに

何年も続いているプロジェクトとかはこういうのあると便利ですよね。

他のフレームワークとかでもないのかなぁとか思ったんですが、cakephpはなかったです。

提案はされてみたみたいですが、結局コマンドでよくね?ってなったみたいですね。

github.com

現場からは以上です。