2016-04-17 19 views
2

Ich habe versehentlich eine Datenbank Migrationstabelle gelöscht und ich muss meine Änderungen zurücksetzen. Das scheitert. Wenn ich die Artikelansicht lade, erhalte ich den folgenden Fehler.laravel - php artisan migrate schlägt fehl

QueryException in Connection.php line 669: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'ushop.items' doesn't exist (SQL: select * from items)

in Connection.php line 669 
at Connection->runQueryCallback('select * from `items`', array(), object(Closure)) in Connection.php line 629 
at Connection->run('select * from `items`', array(), object(Closure)) in Connection.php line 342 
at Connection->select('select * from `items`', array(), true) in Builder.php line 1461 
at Builder->runSelect() in Builder.php line 1447 
at Builder->get(array('*')) in Builder.php line 569 
at Builder->getModels(array('*')) in Builder.php line 303 
at Builder->get(array('*')) in Model.php line 646 
at Model::all() in ItemController.php line 15 
at ItemController->index() 
at call_user_func_array(array(object(ItemController), 'index'), array()) in Controller.php line 80 
at Controller->callAction('index', array()) in ControllerDispatcher.php line 146 
at ControllerDispatcher->call(object(ItemController), object(Route), 'index') in ControllerDispatcher.php line 94 
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96 
at ControllerDispatcher->callWithinStack(object(ItemController), object(Route), object(Request), 'index') in ControllerDispatcher.php line 54 
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\ItemController', 'index') in Route.php line 174 
at Route->runController(object(Request)) in Route.php line 140 
at Route->run(object(Request)) in Router.php line 724 
at Router->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Router.php line 726 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699 
at Router->dispatchToRoute(object(Request)) in Router.php line 675 
at Router->dispatch(object(Request)) in Kernel.php line 246 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Kernel.php line 132 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99 
at Kernel->handle(object(Request)) in index.php line 54 
at require_once('/home/thomas/ushop/public/index.php') in server.php line 21 

r Ich habe einige der Forschung getan, und ich habe this gefunden und ich erhalte die folgende beim Fahren Komponist Dump-Autoload

PHP Fatal error: Class 'Item' not found in /home/thomas/ushop/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php on line 336

[Symfony \ Component \ Debug \ Exception \ FatalErrorException ]
Klasse 'Artikel' nicht gefunden

Ich hoffe, dass diese Frage noch nicht beantwortet wurde, aber ich habe bisher nicht viel Glück.

Antwort

2

Es ist, weil Sie eine Tabelle in der Datenbank manuell gelöscht haben, so ist die Tabelle gerade nicht verfügbar, aber wenn Sie versuchen, das Framework rückgängig zu machen versucht, die Migration rückgängig zu machen und daher sucht sie nach der Tabelle in der Datenbank habe manuell gelöscht, so dass der Fehler auftritt. Warum es für die Tabelle aussieht, weil in der untenen Methode Ihrer Migrationsdatei haben Sie so etwas wie diese:

Schema::drop('table_name'); 

So Trys es die bereits gelöscht Tabelle aus der Datenbank zu löschen, aber es konnte nicht gefunden und in In Ihrer Migrationstabelle gibt es einen Datensatz für jede von Ihnen migrierte Tabelle. Sie können also entweder alle Tabellen manuell löschen und von Anfang an migrieren oder die Methode down (Durch Kommentieren der Drop-Anweisung) vorübergehend deaktivieren, damit die Down-Methode in dieser Migrationsdatei nichts unternimmt wenn du zurück rollst. Wenn Sie die Methode down temporär deaktivieren, aktivieren Sie die Methode down erneut. Es ist ein hack-ish Weg, um das Problem zu beheben.

Alternativ können Sie einen Scheck in Ihrer down Methode in jeder Migrationsdatei hinzugefügt werden soll oder nur die Migrationsdatei durch Überprüfen der gelöschten Tabelle, wenn die tabledrop es existiert dann, zum Beispiel:

public function down() 
{ 
    if (Schema::hasTable('table_name')) { 
     Schema::drop('table_name'); 
    } 
} 

Hoffen, Sie haben habe die Idee.

+1

Danke für Ihre Hilfe! –

+0

Sie sind herzlich willkommen :-) –

+1

Entschuldigung, ich muss versehentlich geklickt haben. –

Verwandte Themen