2015-07-05 19 views
6

Das Problem ist, dass ich diesen Fehler haben:Wie man Tisch in Laravel fallen lässt?

[PDOException]

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

Dies ist meine Migrationsdatei:

<?php 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 
class CreateSongsTable extends Migration 
{ 
    public function up() 
    { 
     Schema::create('songs', function (Blueprint $table) 
     { 
      $table->increments('id'); 
      $table->integer('user_id'); 
      $table->string('title'); 
      $table->string('slug')->unique(); 
      $table->timestamps(); 
      $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     }); 
    } 
} 

ich die Lösung denke nur, sein wird die Tabelle dann laufen Migration wieder zu löschen, so wie kann Ich lege einen Tisch in Laravel 5 über die Befehlszeile? Ich benutze MySQL.

+0

, wenn Sie die Tabelle aus Migrationsdatei erstellt haben dann nur die Migration ein Rollback, diesen Befehl ausführen in kli php artisan migrieren: rollback –

+0

Ich habe es gemacht und der Fehler ist immer noch da – koooko

+0

zeigen Sie Ihre Migration-Datei, wo Sie Lieder erstellen Tabelle –

Antwort

-9

Eine nette einfache Möglichkeit, die ich gefunden habe, ist nur mit phpmyadmin und einfach die Tabelle manuell fallen lassen. Natürlich, wenn die Migration immer noch vorhanden ist, wenn Sie die Migration erneut ausführen, wird die Tabelle erneut erstellt.

+1

Dies ist keine Lösung für Ihre Frage "in Laravel ". – Jonathan

5

Sie benötigen eine Down-Methode für Ihre Migration, damit beim Ausführen von php artisan migrate:rollback die Datenbank gelöscht werden kann.

z.B.

<?php 

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

class CreateSongsTable extends Migration 
{ 
    public function up() 
    { 
     Schema::create('songs', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id'); 
      $table->string('title'); 
      $table->string('slug')->unique(); 
      $table->timestamps(); 
      $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     }); 
    } 

    public function down() 
    { 
     Schema::drop('songs'); 
    } 
} 
9

eine Tabelle löschen, können Sie das Schema :: Drop-Methode verwenden:

eine Tabelle in Laravel
Schema::drop('users'); 

// Better 
Schema::dropIfExists('users'); 
8

fallen zu lassen, eine erste Migration erstellen

Schritt eine Tabelle

fallen
$ php artisan make:migration drop_user_table 

Fügen Sie diese auf Ihre Migrate-Datei in up-Funktion Schema::drop('tableName');

$ php artisan migrate 
0

Die einfache Möglichkeit, die Tabelle zu löschen und die Migration erneut auszuführen. Führen Sie einfach den Handwerkerbefehl aus.

php artisan migrate:fresh 

oder wenn Sie die Samen von Tabellen haben dann diesen Befehl ausführen

php artisan migrate:fresh --seed 

Referenz: Laravel Documentation

Verwandte Themen