Laravel部 migration?またまた詰まったところ〜ウェブカツでプログラミング勉強中〜

その他

ども、FC岐阜大好きなほしです。

先週末(9月7日)の栃木SCとの「裏天王山」に勝てなかったことを、地味に引きずっております。J3降格が近づく恐怖。。

いやいや、そんな事ばかり言ってられないので、プログラミングの勉強を頑張りますよ!!

最近は毎日Laravelに苦しみながらも「ウェブカツ」にてプログラミングの勉強をしておりますが、そのLaeavel部にて詰まったところをお話ししようかと思います!

こんな僕の詳細についてもチラッと見てくださいな。↓↓

migration

環境構築後、本格的にレッスン開始早々、新たな機能を知ることになりました。migration(マイグレーション)機能。

migrationとは

データベースへの変更をフレームワーク上で管理しておく機能。DBでのテーブル作成やカラムの変更などを、ファイル(ソース)として管理。そうすることで、急な不具合が発生した時に、前日のDBの状態に戻す、などということが可能になる。

かずきちさんの説明にも出てましたが、確かに自分が間違えてしまった時、元に戻すには前の状態を記憶してないと戻せない!戻そうにも戻せないって時、今まででもあった気がします。この辺りはフレームワークの便利な面だと実感しますね。

のちに出てきますが「ロールバック」で実行したマイグレーションを元に戻せるんです。そしてstepを指定することで、何個か前の状態にも戻せるのだとか。なるほどね!

さあmigrationを使ってテーブルを作る!と思いきや、

ほし
ほし

すでにファイルが用意されている!?え?そうなの??

そうらしいです。全てを作らなくてもいいんです!認証に関する設定ファイル(users)はすでに用意されているとのこと。もちろん自分で作る、デフォルトのファイルを修正してもいい、すでにあるものを使ってもいい。こういう面もフレームワークの良さなんですね!

なので、1つのファイル(drills)を作っていくプロセスを動画を見ながら進めていきます。

ファイル作成

このファイル作成時にちょっと問題が起きました。動画のように作成し、作成自体はうまくいったんです。で、一度ロールバックを試す前に、時間の関係で中断せざるを得なくなり、中断したんです。

結局日をまたぐことになって、改めて一から作成し始めたんですよ。
(途中から始めるという概念はその時皆無でした。できたかどうかもわかりませんが。。。)

そこで作成したのが、上記で述べたすでにフレームワークで準備されているファイル名で作成・実行してしまったんです。(drills作るはずが、usersを作ってしまった!)

そうするとエラーが!!!!!!!

  1   Whoops\Run::handleError("Cannot declare class CreateUsersTable, because the name is already in use", "/Applications/MAMP/htdocs/laravel_sample/database/migrations/2019_09_05_061813_create_users_table.php")
      /Applications/MAMP/htdocs/laravel_sample/vendor/filp/whoops/src/Whoops/Run.php:433

  2   Whoops\Run::handleShutdown()
      [internal]:0
MacBook-ea:laravel_sample ttttt$ php artisan migrate:status

こんなようなエラーだったはず。で、言ってることはなんとなく分かるんですよ。同じファイル名のファイルを作成してしまった自覚はあるので。同じ名前のファイルあるよーって。

でも、修正の方法が分からない!!!!!!!!!!

しまったなーと後悔しながら、新たに作れば先に進むのでは?ということで、正確なファイル名で作成・実行したんです。それでも同じエラーが。

さぁここからエラーとのタイマンが始まりました。今回は結構手強いですよね。まだLaravelのことを把握してない状況ですから。相手は道の相手。

でも僕には頼りになるセコンド、Qiitaがいますから!

Laravelのマイグレーション - Qiita
データベースのテーブル作成や編集などを管理する方法として「マイグレーション」ってのがあります。 その方法は大きくわけて2段階。 マイグレーションファイルの作成 マイグレーション実行 マイグレーションファイルってのは「どんなテー...
LaravelのMigrationについて調べた結果 - Qiita
LaravelのMigrationについて 公式ドキュメント 公式ドキュメント引用 マイグレーション...
laravelでのマイグレーション作成手順 - Qiita
最近laravelを触る機会があったので、そこで学んだことを メモしていきます。 今回はマイグレーション手順です。 こちらの記事は4.系のコマンドになります。 マイグレーションのファイル作成 php artisan migra...
Laravelのmigrationファイルを消してしまったら起きたこと - Qiita
マイグレーションファイルを消した $ php artisan make:migration create_users_table --create=users 的な感じで、あるテーブルのマイグレーションファイルを作り(実際の...
Laravel5のマイグレーションでの迷走 - Qiita
関連URL MAMPにLaravel5を使える環境を作ってみる MAMPにLaravel5を使える環境を作ってみる~DB設定編~ Laravel5でFORMの作成 自分環境のブラウザアクセス
Laravelのmigrate:reset時に謎エラーが出た時の対処 - Qiita
app/database/migratinosの中身を色々といじくってたらmigrate:reset時に以下の様なエラーが出ました。 ...

この他にも色々ググりましたけど、バッチリハマる回答はなし。ロールバックもしたし、refreshもしたし。んー痒いところに手が届かないもどかしさ。

手段がなくなったので、もうファイル消しちゃえ!って感じで削除することにしました。この時にはデフォルトのファイル2個、僕が作成したもの(間違えて作ったusers1個、drills3個)4個あります。

まず最新のものを削除。特に何も変化なし。相変わらず同じエラー。
その次に新しく作ったものを削除。特に変化なし。相変わらずエラー。
その次に間違って作ったファイル(users)を削除したんです。そうするとエラーの内容が少し変わりました!おぉ!

drillsのファイルがすでにあるよって。これはウェブカツの動画見ながら作ったファイルです。
てことはデフォルトのファイル2個のみ残して、もう最初と全く同じ状態で最初からやればいける!?ってなり、検証するとできました!!!!

ようやくエラーからの解放おめでとう自分!!

結局、マイグレーションファイル作成し・実行した。
けれども同じ名前のファイルあるよってエラーになって、実行されてなかったってことではないかと思ってます
なので、ファイル消して新たに実行すれば良かったのだと結論づけました。

この解釈で合ってるのか今の僕ではわかりませんが、ひとまずOK!

ふ〜。お疲れ様でした。

コメント

タイトルとURLをコピーしました