在 laravel 中迁移 运行 时出现意外错误(table 不存在)

Unexpected error ( table doesn't exist ) when run migration in laravel

我有很多迁移要迁移,我的数据库现在是空的。

当我 运行 php artisan migrate 我得到这个错误:

PDOException::("SQLSTATE[42S02]: Base table or view not found: 1146 Table 'shop.permissions' doesn't 
exist")

这是我的权限迁移:

Schema::create('permissions', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('label')->nullable();
        $table->timestamps();
    });

    Schema::create('permission_user', function (Blueprint $table) {
        $table->unsignedBigInteger('permission_id');
        $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
        $table->unsignedBigInteger('user_id');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->primary(['permission_id', 'user_id']);
    });

    Schema::create('roles', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('label')->nullable();
        $table->timestamps();
    });

    Schema::create('permission_role', function (Blueprint $table) {
        $table->unsignedBigInteger('permission_id');
        $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
        $table->unsignedBigInteger('role_id');
        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        $table->primary(['permission_id', 'role_id']);
    });

    Schema::create('role_user', function (Blueprint $table) {
        $table->unsignedBigInteger('user_id');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->unsignedBigInteger('role_id');
        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        $table->primary(['user_id', 'role_id']);
    });

当我在我的数据库中创建权限手册并且 运行 php artisan migrate 它工作时没有这个错误但是在一些迁移之后我得到了这个错误:

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'permissions' already exists

我可以做什么来迁移我的表??

当您有服务提供商查询权限时,通常会出现这个问题,通常是为了设置授权门。每次启动应用程序(包括在控制台中)时都会启动服务提供程序。当数据库为空时没有table查询。

如果您出于授权目的执行此查询,则在控制台中 运行ning 时可能不需要执行此操作,因为没有网络请求传入。如果您愿意,可以尝试让你正在做的事情成为有条件的 try 而不是 运行 if 运行ning 在控制台中;在服务提供商中:

if (! $this->app->runningInConsole()) {
    // not running in console
}