Laravel 5.5错误基表或视图已存在:1050表'用户'已存在

Nit*_*jan 6 php mysql laravel-5 laravel-5.5

产品规格:

  • Laravel版本:5.5.3
  • PHP版本:7.1
  • 数据库驱动程序和版本:MariaDB 10.1.26

描述:

C:/Users/user/code/blog/>php artisan migrate

[Illuminate\Database\QueryException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists (SQL: create table users (id int unsigned not null aut
o_increment primary key, name varchar(255) not null, email varchar(255) not null, password varchar(255) not null, remember_token varchar
(100) null, created_at timestamp null, updated_at timestamp null) default character set utf8mb4 collate utf8mb4_unicode_ci engine = InnoDB R
OW_FORMAT=DYNAMIC)

[PDOException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists
Run Code Online (Sandbox Code Playgroud)

重现步骤:

 C:/Users/user/code/blog/>laravel new website

 C:/Users/user/code/blog/>php artisan make:migration create_lists_table --create=lists

 C:/Users/user/code/blog/>php artisan migrate
Run Code Online (Sandbox Code Playgroud)

问题

它创建用户表并给出错误但不创建列表

Kal*_*ski 12

以下是我为解决同一问题所采取的步骤:

  1. 在我写的控制台中 php artisan tinker

  2. 然后,再次在控制台中, Schema::drop('users')

  3. 最后php artisan migrate,一切都奏效了.


Nit*_*jan 9

我通过改变我的create_users_table.php解决了我自己的问题

<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::dropIfExists('users');
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 9

解决这个问题的简单方法是运行以下命令

php工匠迁移:新鲜

  • @Florin 它也会再次创建表 (2认同)
  • 请注意,这将从头开始创建所有内容,您将丢失数据。 (2认同)
  • @Rajat:这就是为什么人们永远不应该盲目使用本网站或任何其他网站上找到的代码,而应该发现代码背后的想法,然后根据所获得的知识创建自己的代码。否则,您将“自行承担风险”地使用代码。最好发表*善意的*评论,提及您的问题,对答案投反对票(如果合适),然后继续。 (2认同)

小智 6

以下命令解决了我的问题:

 1. php artisan tinker
 2. Schema::drop('your_table_name')
 3. php artisan migrate
Run Code Online (Sandbox Code Playgroud)


Moh*_*sen 6

如果数据库中存在表,您可以通过添加以下代码跳过迁移表:

public function up()
{
    if(Schema::hasTable('users')) return;       //add this line to your database file

    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();

    });
}
Run Code Online (Sandbox Code Playgroud)