本番環境でマイグレート実行した時に、[base table or view already exists] エラーが出たときの対策です。
ロールバック、テーブル削除、リフレッシュの3つの対策を解説します。
だんだんと過激な対策になっていきます。
まずは最初のマイルドな方法から試してみてください。
Git Pullエラー1050:Base table or view already exists 3対策
エラーの意味は「マイグレートしようとしているテーブル、既にあるよ」というもの。
まずは問題のテーブルを突き止めましょう。
【マイルドな対策】ロールバックで処理のやり直し
問題のテーブルをつきとめたら、そのテーブルを作成するところまでロールバックします。
1 |
php artisan migrate:rollback |
その後、マイグレートをやり直してみましょう。
1 |
php artisan migrate |
なお、このエラーはテーブルに修正を加えてしまった時などに起こりがちです。(←経験則)
たとえば、テーブル名を変えたり、データ型を変更したり。
もし該当する場合には、ロールバックを実行後、こういった変更処理のマイグレーションファイルは削除してください。
最初から正しい情報でマイグレーションファイルを作成した後、 php aritsan migrate を実行します。
力技でロールバックせずに修正を「なかったことに」する手でもOKです^^;
【少し過激な対策】テーブルを削除する
2つ目の方法は少し過激になります。
テーブルを削除してしまう方法です。
①データをエクスポートする
テーブル内にデータが入っている場合は、一度エクスポートしておいてください。
②テーブル削除します。
xserverのphpmyadminであれば、ログイン後、該当のテーブルを選択します。
「操作」タブをクリック
右側の「テーブルを削除する」を選択します。
③マイグレートを実施
削除後に再度、 php artisan migrate を実行します。
無事にできていたら、エクスポートしたデータをインポートします。
【過激な対策】全部やりなおし
上記の方法でだめなら、全部やりなおしという手があります。
1 |
php artisan migrate:refresh |
リフレッシュを行うと、すべてのマイグレーションをロールバックしてなかったことにできます。
さらに、最後に マイグレートをかけてくれます。
ただ当然ながら、テーブル内のデータは消えてしまうので、データが既に入っているときには、ご注意ください。
マイルドな方法から試してみてくださいね。
エラーの解決、祈っております!