Laravelのマイグレーション時のエラー「Cannot declare class XXXTable, because the name is already in use」は、一般的には、Laravelのマイグレーション実行時にクラス名が重複している場合に発生します。
解決策
Laravelではマイグレーションファイルのクラス名が一意である必要があります。もし、同じテーブルに対して複数のマイグレーションファイルを作成していて、クラス名が重複している場合、このエラーが発生します。
そのため、重複しているマイグレーションファイルのクラス名を変更します。
たとえば、CreateUsersTable
がすでに存在する場合、次のマイグレーションでは AlterUsersTable
や UpdateUsersTable
のように異なるクラス名を使用します。
クラス名が重複していないにも関わらずエラーになる場合
マイグレーションファイル名とクラス名に不一致があると、同じエラーになります。
マイグレーションファイルをつくったあと、ファイル上のクラス名を触ってしまったときに起こりがちです。
クラス名を変更した場合、マイグレーションのファイル名もクラス名にあわせて変更する必要があります。
たとえば、最初につくったマイグレーションファイルが以下だとします。
2024_10_0x_1xxxxx_create_images_table.php
このとき、マイグレーション中身は以下のようになります。
class CreateImagesTableTable extends Migration
{
...
}
このクラス名を変えたとします。
class CreateTestImagesTableTable extends Migration
{
...
}
こうした場合、マイグレーションファイル名も
2024_10_0x_1xxxxx_create_test_images_table.php
とクラス名にあうように変更しましょう。