Laravel 4 migrar problemas de reversión

5 minutos de lectura

Puedo ejecutar fácilmente la migración artesanal, etc., pero cuando trato de revertirla, con migración: reversión, 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?

  • Proporcione los archivos de migración para las migraciones que está intentando revertir

    – Marco Rivadeneyra

    18 de junio de 2013 a las 16:49

  • pastebin.com/z5c7nvZd (listado)

    – Destreza

    18 de junio de 2013 a las 17:03

  • ¿Cómo se llama su archivo CodeSnippetsMigration? ¿Cambió esto o el nombre de la clase manualmente?

    – rmóbis

    18 de junio de 2013 a las 18:32


  • He tenido el mismo problema. Pero en mi caso, falló en una migración: restablecer/migrar: actualizar. el problema fue que eliminé un archivo de migración, pero las migraciones de la tabla aún contenían una entrada para este archivo, por lo que el artesano no pudo revertir esta migración debido a un error de clase no encontrada. Eliminé esta entrada de la tabla de migraciones y funcionó bien.

    – DeyyyFF

    3 de noviembre de 2014 a las 12:30

Tal vez ya hayas resuelto este problema. Pero me doy cuenta de que, por alguna razón, una reversión a menudo requiere que ejecute composer dumpautoload primero. Incluso si su migración funciona.

  • La documentación carece de este dato. (laravel.com/docs/migrations#rolling-back-migrations)

    – erj1

    02/08/2013 a las 19:55


  • Eres un genio. Me tuvo engañado durante una hora.

    – al_manchester

    13 de marzo de 2014 a las 9:35

  • ¿Por qué necesitamos ejecutar composer dumpautoload?

    – Mahoma

    25 de noviembre de 2014 a las 11:46

  • Necesitamos la carga automática de volcado del compositor porque las migraciones son solo un montón de clases que se cargan automáticamente durante el proceso de ejecutarlas arriba/abajo. Sin embargo, php crafted dump-autoload no mostró el error composer.json, mientras que composer dump-autoload sí lo hizo.

    – Dmitri Sintsov

    2 de enero de 2015 a las 17:52

  • En mi caso, aún no había instalado composer en esta máquina. (Copié todo el directorio al reinstalar Linux). Entonces, mientras migre:make ejecuta dump-autoload, no se estaba ejecutando en mi máquina local ya que no tenía Composer. La instalación de Composer y la ejecución de dump-autoload funcionaron.

    –Dustin Graham

    07/01/2015 a las 18:31

avatar de usuario
jamesg

Después de haber luchado con este problema durante varios días, creo que ahora puedo proporcionar la definitivo respuesta para resolver este problema. Sí, gran llamada, lo sé, pero tengan paciencia conmigo.

El primer puerto de escala si encuentra este problema es ejecutar composer dump-autoload. Esto debería resultar en una versión actualizada del archivo. vendor/composer/autoload_classmap.php.

Si autoload_classmap.php no se actualiza, es posible que tenga un problema de permisos, en cuyo caso podría intentar sudo composer dump-autoload.

Sin embargo, si autoload_classmap.php lo hace actualizarse, verifique que contenga una entrada para su clase de migración (en este caso CreateCodesnippetsTable). Si no hay ninguna entrada para esta clase, debe comprobar su composer.json archivo y asegúrese de que app/database/migrations La carpeta está incluida en la sección de carga automática, por ejemplo:

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

Esto último es lo que arruinó las cosas para mí. En un intento equivocado de optimizar las cosas, saqué todo lo que pude de mi composer.json archivo, pensando ingenuamente que esto solo afectaría a las solicitudes web. Resulta que este Artisan también afectó, por lo que volver a poner esta línea en funcionamiento composer dump-autoload solucionado el problema para mí.

Finalmente, si todo eso falla, entonces quizás hay un error en una de las bibliotecas de soporte que está causando el problema, en cuyo caso puede intentar actualizar usando composer update o alguna variación de la misma. Sin embargo, sospecho que esta rara vez será la verdadera causa del problema.

  • La falta de cambios de carga automática también puede significar una mala sintaxis en composer.json. Lo sabrás al correr composer dump-autoload en su proyecto principal, pero cuando se ejecuta php artisan dump-autoloadun error de sintaxis en un composer.json en su banco de trabajo no será alertado. Si sus proyectos de banco de trabajo están fallando, cd en ellos e intentar correr composer dump-autoload individualmente.

    – Tomás Buteler

    06/08/2014 a las 21:40


Si está en Windows, simplemente use compositor en su terminal/utilidad de línea de comandos y haga lo siguiente:

composer dump-autoload

¡Espero eso ayude!

Por lo que puedo ver, supongo que ha cambiado el nombre de la clase manualmente. En el error tienes el nombre de la 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 cambió manualmente).

Si revisa 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 intenta leer el archivo con el nombre proporcionado en la base de datos, en el caso de que lo cambie manualmente, laravel no puede encontrar la clase y obtiene el error.

Para solucionar esto, puede deshacer los cambios e intentar revertir o editar manualmente la fila de migración en su base de datos para incluir el nombre de clase correcto.

Espero que esto ayude.

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

ingrese la descripción de la imagen aquí

avatar de usuario
Saltamontes

Lo arreglé corriendo

composer.phar update

avatar de usuario
Udhav Sarvaiya

descargar el compositor.phar archivo del sitio de laravel y traer el compositor.phar archivo a la directorio raíz de la carpeta laravel,

luego, desde la terminal, vaya al directorio raíz de laravel y ejecute el composer.phar update o simplemente correr php artisan dump-autoload.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad