php - que - Laravel 4 migra problemas de retrotracción
laravel yield example (9)
Puedo ejecutar fácilmente la migración artesanal, etc., pero cuando intento retrotraerlo, con la migración: rollback sigo recibiendo este error,
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}}
¿Es esto un error? o ¿cómo debo depurar esto?
Después de haber luchado con este problema durante varios días, creo que ahora puedo proporcionar la respuesta definitiva para resolver este problema. Sí, una gran llamada lo sé, pero tengan paciencia conmigo.
El primer puerto de escala si se encuentra con este problema es ejecutar el composer dump-autoload
. Esto debería dar como resultado una versión actualizada del vendor/composer/autoload_classmap.php
archivos vendor/composer/autoload_classmap.php
.
Si autoload_classmap.php
no se actualiza, es posible que tengas un problema de permisos, en cuyo caso podrías probar con sudo composer dump-autoload
.
Sin embargo, si autoload_classmap.php
se actualiza, verifique que contenga una entrada para su clase de migración (en este caso CreateCodesnippetsTable
). Si no hay entradas para esta clase, debe verificar su archivo composer.json
y asegurarse de que la carpeta de la app/database/migrations
esté incluida en la sección de autocarga, por ejemplo:
"autoload": {
"classmap": [
"app/controllers",
"app/models",
"app/database/migrations"
]
},
Este último bit es lo que jodió las cosas para mí. En un intento equivocado de optimizar cosas saqué todo lo que pude de mi archivo composer.json
, ingenuamente pensando que esto solo afectaría las solicitudes web. Resultó que esto también afectó a Artisan, así que al volver a poner esta línea y ejecutar el composer dump-autoload
arregló el problema.
Finalmente, si todo eso falla, entonces tal vez haya un error en una de las bibliotecas de soporte que está causando el problema, en cuyo caso puede intentar actualizar usando la composer update
o alguna variación del mismo. Sin embargo, sospecho que rara vez será la verdadera causa del problema.
Lo arreglé corriendo
composer.phar update
Me parece que no hay una solución única para este error. He intentado muchas sugerencias, pero al final esta funciona en mi extremo.
COMPOSER=composer.json composer dump-autoload
Por lo que puedo ver, supongo que cambiaste el nombre de clase manualmente. En el error, tiene el nombre de clase CreateCodesnippetsTable
pero en el archivo de migración que proporcionó (pastebin), el nombre de la clase es CreateCodeSnippetsTable
(observe la S en Snippets, supongo que eso es lo que ha cambiado manualmente).
Si marca la tabla de migraciones en su base de datos, verá registros para cada migración. Cuando crea la migración, se guardará en la base de datos con ese nombre y el método de reversión intentará leer el archivo con el nombre provisto en la base de datos, en el caso en que lo cambie manualmente, laravel no puede encontrar la clase y usted obtiene el error.
Para solucionarlo, puede deshacer los cambios e intentar deshacer o editar manualmente la fila de migración en su base de datos para incluir el nombre de clase correcto.
Espero que esto ayude.
Quizás ya hayas resuelto este problema. Pero me doy cuenta de que, por alguna razón, una reversión a menudo requiere que composer dumpautoload
primero. Incluso si tu migración funciona
Si está en Windows, simplemente use el compositor en su terminal / línea de comando y haga lo siguiente:
composer dump-autoload
¡Espero eso ayude!
Simplemente dejé caer la tabla de migraciones y luego ejecuté "php artesanal migrate: refresh"
Entonces todas las migraciones fueron capaces de ejecutarse, no estoy seguro de si ese es el mejor método, pero funcionó para mí.
Estoy tomando el sol laravel 5,
Buena suerte
cargue el archivo composer.phar del sitio laravel y traiga el archivo composer.phar al directorio raíz de la carpeta laravel, luego desde el terminal vaya al directorio raíz de laravel y ejecute la actualización de composer.phar o simplemente ejecute php artisan dump-autoload . buena suerte
me enfrenté al mismo problema y descubrí el problema
Creé una migración para agregar una nueva fecha de columna en la tabla PatientReasonOfVisits. Utilicé generadores laravel cuando creé la migración, el nombre de la clase era
class AddDateToPatientReasonOfVisitsTable
Asegúrese de que después de crear un nuevo archivo de migración necesite ejecutar el compositor dump-autoload para asegurarse de que el archivo esté en la lista en el archivo del mapa de la clase
el nombre del archivo era 2014_09_02_214134_add_date_to_patientreasonofvisitstable.php
la migración se realizó correctamente y se agregó un nuevo registro a la tabla de migración. en la columna de migración se usa el nombre del archivo
cuando deshago la migración obtuve la clase no encontrada excepción qué clase no se encuentra esta
AddDateToPatientreasonofvisitsTable
nota: la diferencia entre los nombres de las clases
¿Por qué y cómo resolví este problema? Supongo que cuando revierte el nombre de la clase se resuelve utilizando el nombre del archivo de migración, en la tabla de migración, las letras mayúsculas y minúsculas se deciden subrayando "_" en el nombre del archivo.
así que después de renombrar el archivo de migración a 2014_09_02_214134_add_date_to_patient_reason_of_visits_table.php y seguro ejecutar el compositor dump-autoload después de cambiar el nombre del archivo, el nombre de la clase se resolvió correctamente sin excepción