@Vova135798

Почему выдает ошибку при создании модели с миграцией?

При создании модели и миграции выдало ошибку:
Model created successfully.

   InvalidArgumentException 

  A CreateUsersTable class already exists.

  at vendor/laravel/framework/src/Illuminate/Database/Migrations/MigrationCreator.php:102
     98▕             }
     99▕         }
    100▕ 
    101▕         if (class_exists($className = $this->getClassName($name))) {
  ➜ 102▕             throw new InvalidArgumentException("A {$className} class already exists.");
    103▕         }
    104▕     }
    105▕ 
    106▕     /**

      +28 vendor frames 
  29  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Я так понимаю, ошибка возникла при подключении к базе данных. Я использую mysql на mamp с портом 8888. Порт самой базы данных 8889

'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '8889'),
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'root'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
Обновите ларавел до версии 8.74 и переходите на анонимные классы миграций.
Для этого создайте каталог /stubs
Внутри создайте три файла

migration.create.stub

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
  public function up()
  {
    Schema::create('{{ table }}', function (Blueprint $table) {
      $table->id();
      $table->timestamps();
    });
  }

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



migration.stub
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
  public function up()
  {
  }

  public function down()
  {
  }
};


migration.update.stub
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
  public function up()
  {
    Schema::table('{{ table }}', function (Blueprint $table) {
    });
  }

  public function down()
  {
    Schema::table('{{ table }}', function (Blueprint $table) {
    });
  }
};


Теперь можете как угодно называть миграции, конфликтов имен не будет.

PS. В девятке всё равно анонимные классы миграций будут идти по умолчанию.
Ответ написан
Комментировать
E1ON
@E1ON
Programming, Gamedev, VR
A CreateUsersTable class already exists.
Магия перевода:
Класс CreateUsersTable уже существует.

У вас успешно создалась сущность, но миграция с таким именем уже существует.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы