php - nova - laravel wikipedia




Laravel 4 migrare i problemi di rollback (6)

Avendo appena affrontato questo problema per diversi giorni, penso di poter fornire la risposta definitiva per risolvere questo problema. Sì, grande chiamata, lo so, ma sopportami.

La prima porta di chiamata se si verifica questo problema è eseguire composer dump-autoload . Ciò dovrebbe comportare una versione aggiornata del vendor/composer/autoload_classmap.php file vendor/composer/autoload_classmap.php .

Se autoload_classmap.php non viene aggiornato, potresti avere un problema con le autorizzazioni, nel qual caso potresti provare sudo composer dump-autoload .

Tuttavia, se autoload_classmap.php viene aggiornato, controlla che contenga una voce per la tua classe di migrazione (in questo caso CreateCodesnippetsTable ). Se non vi è alcuna voce per questa classe, è necessario controllare il file composer.json e assicurarsi che la cartella app/database/migrations sia inclusa nella sezione di caricamento automatico, ad esempio:

"autoload": {
    "classmap": [
        "app/controllers",
        "app/models",
        "app/database/migrations"
    ]
},

Quest'ultimo pezzo è ciò che ha rovinato le cose per me. In un tentativo fuorviante di ottimizzare le cose ho tirato fuori dal mio file composer.json il più possibile, pensando ingenuamente che ciò avrebbe avuto effetto solo sulle richieste web. Si scopre che anche questo ha influenzato Artisan, quindi rimettendo questa linea e eseguendo composer dump-autoload risolto il problema per me.

Infine, se tutto ciò non riesce, allora forse c'è un bug in una delle librerie di supporto che sta causando il problema, nel qual caso puoi provare ad aggiornarlo usando l'aggiornamento del composer update o qualche sua variante. Tuttavia, sospetto che raramente sarà la vera causa del problema.

Posso facilmente eseguire la migrazione artigianale ecc., Ma quando provo a ripristinarlo, con la migrazione: rollback continuo a ricevere questo errore,

c:\xampp\htdocs\laravel>php artisan migrate:rollback
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'CreateCodesnippetsTable' not found","file":"C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illum
inate\\Database\\Migrations\\Migrator.php","line":301}}

è un insetto? o come devo eseguire il debug di questo?


Da quello che vedo, suppongo che tu abbia cambiato il nome della classe manualmente. Nell'errore si ha il nome della classe CreateCodesnippetsTable ma nel file di migrazione che hai fornito (pastebin), il nome della classe è CreateCodeSnippetsTable (nota la S in Frammenti, credo che sia ciò che hai modificato manualmente).

Se controlli la tabella delle migrazioni nel tuo database, vedrai i record per ogni migrazione. Quando crei la migrazione verrà salvato nel database con quel nome e il metodo di rollback prova a leggere il file con il nome fornito nel database, nel caso in cui lo cambi manualmente, laravel non riesce a trovare la classe e ottieni l'errore.

Per risolvere questo problema è possibile annullare le modifiche e provare a eseguire il rollback o modificare manualmente la riga di migrazione nel database per includere il nome classe corretto.

Spero che questo ti aiuti.


Ho semplicemente abbandonato la tabella delle migrazioni, quindi ho eseguito "php artisan migrate: refresh"

Quindi le migrazioni sono state tutte in grado di eseguire, non sicuro se questo è il metodo migliore, ma ha funzionato per me.

Sto abbronzando laravel 5,

In bocca al lupo


L'ho risolto correndo

composer.phar update


Se sei in Windows, usa semplicemente compositore nel tuo terminale / utility della riga di comando e fai quanto segue:

composer dump-autoload

Spero che sia d'aiuto!


ho affrontato lo stesso problema e capito il problema

Ho creato una migrazione per l'aggiunta di una nuova data di colonna nella tabella PatientReasonOfVisits Ho usato i generatori laravel quando ho creato la migrazione il nome della classe era

class AddDateToPatientReasonOfVisitsTable

Dopo aver creato un nuovo file di migrazione, è necessario eseguire composit-dump-autoload per assicurarsi che il file sia elencato nel file della mappa di classe

il nome del file era 2014_09_02_214134_add_date_to_patientreasonofvisitstable.php

la migrazione è stata eseguita correttamente e un nuovo record è stato aggiunto nella tabella di migrazione. nella colonna di migrazione viene utilizzato il nome del file

quando eseguo il rollback della migrazione, la classe non ha trovato un'eccezione su quale classe non è stata trovata questa

AddDateToPatientreasonofvisitsTable

nota: la differenza tra i nomi delle classi

perché e come ho risolto questo problema credo che quando si ripristina il nome della classe risolto usando il nome del file di migrazione che nella tabella di migrazione le lettere maiuscole e minuscole sono decise dal trattino di sottolineatura "_" nel nome del file

quindi dopo aver rinominato il file di migrazione su 2014_09_02_214134_add_date_to_patient_reason_of_visits_table.php e aver eseguito sicuramente compositore dump-autoload dopo aver rinominato il file, il nome della classe è stato risolto correttamente senza eccezioni





laravel