2017-09-26 3 views
0

Je suis nouveau à laravel. J'ai créé des migrations et je peux les voir dans mon dossier database/migrations. Mais quand je lance la commande php artisan migrate, il jette cette erreur:Laravel Migrations

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

Oui, j'ai déjà migré la table utilisateur déjà, mais maintenant j'ai créé une autre migration. N'est-il pas supposé migrer la dernière migration que j'ai créée après ma commande php artisan migrate?

+0

Y a-t-il une table 'migrations' dans votre base de données? Il devrait créer cette table et l'utiliser pour savoir quelles migrations ont déjà été exécutées. – jfadich

+0

Avez-vous essayé php artisan migrate: rafraîchir OU php artisan migrer: reset ou php artisan migrer: rollback --step = 5 && php artisan migrate: rafraîchir? – Andy

Répondre

1

Si votre deuxième migration pour la table des utilisateurs ressemble à ceci:

Schema::create('users', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('name', 25); 
    // more migrations ... 
}); 

il va essayer de créer le nouveau tableau users. Notez que la deuxième migration a Schema::créer. Vous cherchez à faire quelque chose de plus comme modifier la table:

Schema::table('users', function (Blueprint $table) { 
    $table->string('name', 50)->change(); 
}); 

Si vous cherchez à remplacer complètement (cela effacera toutes les données dans le tableau) migration avant avec une nouvelle table, vous pouvez faire quelque chose comme suit:

<?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', 50); 
      $table->timestamps(); 
     }); 
    } 

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

Toutefois, si vous faites cela, vous risquez fort de mal comprendre le fonctionnement des migrations. Le but est de pouvoir modifier les colonnes de votre base de données sans avoir à détruire complètement la table.