書籍「Laravelの教科書」Laravel13対応サポートガイド公開中 → ダウンロードはこちら

マイグレーションやり直し方法とエラー対策:Illuminate Database QueryException

Laravelデータベース

Laravelでmigrateを行ったとき、こんなメッセージが出てきたときの対処法です。

「Illuminate Database QueryException」

また、今後のmigrateエラーを回避するための2つの対策を紹介します。

migrate rollbackをしよう

まずはRollbackをしましょう。

「間違えたから1回戻る」コマンドです。

rollbackのおすすめ手順

まずは今、どこまで反映されているか確認します。

①phpMyAdminにログインして「migrations」をクリックします。

 

②テーブル一覧が出てきます。一番下にあるのが、最新のテーブルです。

migrate するごとに、batch番号(上記表の右側)が増えていきます。
Rollbackを1度かけると、一番大きいbatch番号のmigrationファイルがまとめてRollbackされます。

③コマンドラインに migrate:rollback を入力します。

php artisan migrate:rollback

ちなみに、1回分ではなく、もっと前に戻す!ことも可能です。

たとえば5回前に戻すときは、次のように入力します。

php artisan migrate:rollback --step=5

ただ分かりにくくなるので、1回ずつ実施するほうが良いかと思います。

 

④もう一度phpMyAdminにログインします。

きちんとテーブルが削除されているのを確認しましょう。

 

⑤マイグレーションファイルは手動で削除してもOKですし、修正して、再度使ってもOK。

 

⑥テーブルを作りなおし、再度 migrate を実行します。

migrate reset と migrate refresh

おすすめはrollbackですが、もう少し過激(?)な方法もあります。

migrate reset を行うと、すべてのマイグレーションをロールバックしてくれます。

php artisan migrate:reset

migrate refresh を行うと、すべてのマイグレーションのロールバックに加え、migrateもしてくれます。

php artisan migrate:refresh

該当箇所のマニュアルはこちら。

rollbackがテーブルをひとつずつ削除していたことに比べると、スピーディです。

ただ、これまでテーブルに入っていたデータが消えてしまので要注意。

ロールバックをひとつずつ行っていくほうが安全かと思います。

migrate トラブル防止のための対策2点

今後、migrate トラブルが起こらないようにするための対策を2つ紹介します。

migrate後、マイグレーションファイルは直接編集しない

トラブルの原因ですが、手動でマイグレーションファイルを操作してしまったりすることが原因です。

マイグレートを行った後は、直接、マイグレーションファイルを編集しないようにしましょう。

テーブルにカラム(列)を変更したり、データ型を変えたりするのは、コマンドを使って行いましょう。

カラムを加えたりした後に down を記述すること

マイグレーションファイルを新たに作成すると、ファイルの削除に関するコードが自動で入ってきます。

ファイル下部の function down()の下です。

    public function down()
    {
        Schema::dropIfExists('posts');
    }

ところが、カラムを追加したりした時にできるマイグレーションファイルでは、function down()の項目は空欄になっています。

自分でdropメソッドを入力せねばいけません。

たとえば、新たに【admin】というカラムを追加したときは、次の一行を追加します。

$table->dropColumn('admin');

dropColumn追加例

ここを入れ忘れていると、きれいに削除できなかったりするので、注意しましょう。

さいごに

今回は、自分の失敗をもとに作成しました。

まとめますと、migrationエラー解決・回避のためのポイントは次の3点です。

  • データベースエラーがでたら、Rollbackをして操作をやり直す
  • データベースは一度マイグレートしたら、コマンドを使って編集するのが安全
  • マイグレーションファイルのfunction down も忘れずに書いておこう

 

LaravelデータベースLaravel・PHP豆知識・トラブル対策

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる
 

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新版Laravel13への対応に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel13に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した本を書きました。 書店やAmazon等のオンラインショップにて販売中
最新版Laravel13対応用サポートガイド(PDF)あり

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。
最新版Laravel13対応用
サポートガイド(PDF)あり

書籍の詳細を見てみる
シェアする
Twitter始めました。

コメント

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