即使我迁移:新鲜它显示我该表已经存在..为什么?

问题描述 投票:0回答:3

所以我想要

php artisan migrate:fresh
但是我收到这个错误

基表或视图已存在:1050 表“角色”已存在

即使我从 phpmyadmin 删除数据库,清理缓存并再次创建数据库,它仍然显示相同的消息,表行的迁移如下:

<?php

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

class CreateRolesTable extends Migration
{
    public function up()
    {
        Schema::create('roles', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->tinyInteger('status');
        });
    }

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

显示完整错误:

SQLSTATE[42S01]:基表或视图已存在:1050 表“角色”已存在(SQL:创建表

roles
(
id
bigint unsigned not null auto_increment 主键,
name
varchar(255) not null,
guard_name
varchar(255) not null,
created_at
timestamp null,
updated_at
timestamp null) 默认字符集 utf8mb4 collate 'utf8mb4_unicode_ci')

这是为什么呢?我可以或应该做什么?

mysql laravel database migration
3个回答
1
投票

首先使用此代码Schema::dropIfExists('roles');删除

roles
表,然后创建。

<?php

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

class CreateRolesTable extends Migration
{
    public function up()
    {
        Schema::dropIfExists('roles'); //added
        Schema::create('roles', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->tinyInteger('status');
        });
    }

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

0
投票

如果它在你进行工匠迁移之前已经存在,它当然会这样说。您是否进行了迁移并且中途中断了?您可以重置它或删除该表并重试(如果您在本地开发中并且可以删除它)。

php artisan 迁移:重置


0
投票

您可以简单地这样做,而不是做那么多回滚和浪费时间:

  1. 转到您的数据库
  2. 打开名为“migrations”的表
  3. 插入一个假行,其中包含您的迁移名称(导致此情况的人) 错误)例如 2021_04_16_155266_create_roles_table

解决了

© www.soinside.com 2019 - 2024. All rights reserved.