質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laragon

Laragonは、Windows向けのローカルテスト環境作成ツール。高速且つ軽量で、扱いやすく拡張も容易です。PHP/Node.js/Python/Java/Go/Rubyをサポートしており、ApacheとNginxの使用の切り替えが簡単にできます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

1回答

3019閲覧

Laravel 既存DBをマイグレーションする方法

ryo_engineer

総合スコア33

Laragon

Laragonは、Windows向けのローカルテスト環境作成ツール。高速且つ軽量で、扱いやすく拡張も容易です。PHP/Node.js/Python/Java/Go/Rubyをサポートしており、ApacheとNginxの使用の切り替えが簡単にできます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2021/10/05 17:49

編集2021/10/05 17:51

環境:
Laravel Framework 8.62.0
MySQL Ver 8.0.25
ローカル環境(Laragon)

既存のウェブアプリをLaravel上に移行しようとしています。
現在はローカル環境でテストしています。DBを移行したいのですが、マイグレーションを実行するにはどういう手順を踏めばよいでしょうか?

新規作成であれば、以下の流れだと思います。
① マイグレーションファイルを作成
php artisan make:migration create_....._table --create .....
② マイグレーション実行
php artisan migrate

既存DBの移行であっても、上記と同じ作業を行ってからデータをリストアすることになるのでしょうか?
そうすると、①でテーブル定義を既存のテーブル分だけ書き移すことになり、少し面倒です。
既存DBの移行のベストプラクティスがあれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

surface_0

2021/10/06 02:54 編集

懸念点がちょっとわからないので、教えてください。 マイグレーションファイルの作成が面倒であればしなければいいと思うのですが、 既存DBについては直接コピーしてマイグレーションには絡めないというのは都合が悪いということでしょうか? それとも既存DBのマイグレーションファイル化が楽にできないかということでしょうか?
ryo_engineer

2021/10/06 02:59

ありがとうございます。 Laravelでの開発では通常、データベースのバージョン管理を目的としてマイグレーションを使用した運用がされると思います。 マイグレーションを使いたい理由は上記の通りとなります。 しかし、マイグレーションをせずにリストアしてしまうと、バージョン管理ができなくなると思います。 リストアした後、カラム変更が必要な状況になってからマイグレーションファイルを作成してマイグレーションを行えばバージョン管理は可能になるのでしょうか? DBの移行段階からマイグレーションファイルを使う必要はないのでしょうか。
guest

回答1

0

ベストアンサー

一般論的として堅牢なシステムを構築するならば、
別環境に再構築できるようにする事を考慮して既存DBの構造を再現できるようにマイグレーションファイルを作るのが定石です。
それを実行した上ででデータだけをコピーします。

また、マイグレーション実行時に既存テーブルがベリファイされるわけではないので、
今後の変更部分だけを管理できればいいというのであれば、
DBをリストアした上で変更点だけをマイグレーションしていけばいいと思います。

まあ、Laravel標準のマイグレーション機能は出来ることが少ないのであまり深く考えてもしょうがないとは思います…

投稿2021/10/06 03:19

surface_0

総合スコア497

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryo_engineer

2021/10/06 03:26 編集

マイグレーションファイルを作成して実行してからデータのリストアをするのが定石なのですね。 大規模なアプリの運用などになると、Laravelで開発をしていても標準のマイグレーション機能ではなく、別のデータベースのバージョン管理システムを使うことがあるということでしょうか? たとえばどんなものがあるか教えていただくことは可能ですか?
surface_0

2021/10/06 04:46 編集

マイグレーション自体は必ずしもLaravelのシステムと一体化している必要はなく、 JavaやPythonといった別言語のツールを使う手もありますので、手広く探してみればたくさん見つけられると思います。 親和性を考慮してPHP製の物を使うとすれば、CakePHPで採用されているPhinxなどが挙げられます。 https://qiita.com/hypermkt/items/b915b8a9fbda2f0c612e
ryo_engineer

2021/10/10 16:14

詳細に教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問