2017-05-09 31 views
0

laravel中的迁移文件用于创建数据库中的表,对吧?但是,当过我尝试迁移它给了我这个错误:我怎么不能在laravel中迁移

C:\xampp\htdocs\app>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 auto_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 tim estamp null) default character set utf8mb4 collate utf8mb4_unicode_ci)

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


和我创建了一个新的迁移文件,这就是所谓的测试。我知道用户已经存在,但我想创建一个名为test的新表。

这里是迁移文件我打算用它来创建我的表,但不会创造:

<?php 

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

class CreateTestsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('tests', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('tests'); 
    } 
} 

这里是用户迁移文件,告诉我它存在:

<?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::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'); 
    } 
} 

这里密码迁移文件:

<?php 

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

class CreatePasswordResetsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('password_resets', function (Blueprint $table) { 
      $table->string('email')->index(); 
      $table->string('token'); 
      $table->timestamp('created_at')->nullable(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('password_resets'); 
    } 
} 

这里是傻瓜迁移文件我有,我没有说话大约因为我认为这不是问题:

<?php 

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

class CreateDummiesTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('dummies', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->text('body'); 
      $table->timestamp('date'); //if you dont put name for the timestamp it will create: create_at and update_at fields. 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('dummies'); 
    } 
} 

,并保持你们等着,我花了长时间才找到的编辑按钮和修复我的代码的间距遗憾。这是我第一次使用堆栈溢出。

回答

1

数据库中的migrations表与您数据库的其余部分不同步。 Laravel正在尝试重新运行迁移以创建users表并且失败。

如果这是一个全新的项目,您可以从数据库中删除所有表并重新运行所有迁移。或者,修正你的迁移表,以便它准确地反映你的数据库的状态。

+0

我放弃我的数据库中的所有表和它仍然不会创建我的新表。它只创建我的用户表和迁移表。它没有创建我的测试表。 – Lami

+0

@Lami这次你收到了什么错误?你可以发布你的所有迁移代码(包括文件名)。 – fubar

+0

@Lami,您可以向我们发送您的测试移植代码。 –

0

在你laravel /应用/供应商/ AppServiceProvider.php 添加以下代码内启动

Schema::defaultStringLength(191); 

然后尝试php artisan migrate:refresh

或最佳

下降的所有表,然后再次运行php artisan migrate

0

在所有表格的起始函数()中添加以下代码()

public function up() 
{ 
     // Add this line 
     Schema::dropIfExists('users'); 
     // from you down method 
     Schema::create('users', function (Blueprint $table) { 
      ........... 
     }); 
} 
0

尝试......

*// AppServiceProvider.php 

use Illuminate\Support\Facades\Schema; 

function boot() 
{ 
    Schema::defaultStringLength(191); 
} 
*