php - seeds - La clase de error fatal de Laravel no se encuentra al migrar
nullable laravel (11)
- He corrido la
artisan migrate:reset
. - He eliminado algunos de mis archivos de migración porque ya no los necesitaba.
- Ejecuté la
composer dump-autoload
seguida de lacomposer dump-autoload
deartisan dump-autoload
artisan migrate
y sigo recibiendo este error:Error fatal de PHP: la clase ''Foo'' no se encuentra en /vagrant/LaravelBackend/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php en la línea 297
Lo intenté:
- Ejecutar nuevamente
composer dump-autoload
yartisan dump-autoload
(también utilizadoartisan clear-compiled
) - Elimine la tabla de migración y ejecute la
artisan migrate:install
- Elimine el vendedor y el archivo composer.lock y ejecute la
composer install
Buscar dentro de mi proyecto con PHPStorm para la clase Foo. No encontré nada.
Sigo recibiendo el mismo error. Es la primera vez que ejecuto esto desde que actualicé a 4.2 si eso podría estar relacionado. ¿Algo más que debería estar buscando?
La solución real es usar el nombre correcto para sus traducciones. Aún puede necesitar hacer una
composer dump-autoload
Los archivos de migración deben ser los siguientes YYYY_MM_DD_000000_create_some_table.php
y el nombre de la clase dentro debe ser
class CreateSomeTable extends Migration{}
Me topé con esto también y la solución fue diferente a todo lo anterior. La razón por la que estaba fallando era porque el nombre del archivo aún se mencionaba en la tabla de migraciones del DB. Como no había columnas exclusivas, no pude eliminarlo con PHPMyAdmin y tuve que tomar la ruta CLI.
Inicie sesión en su servidor como root. Escriba lo siguiente:
mysql -p database_name
(ahora solicita su contraseña. A partir de ahora, todo está precedido por mysql>, lo que significa que está en el entorno Mysql.
select * from migrations;
Busque el archivo de migración que eliminó y copie el nombre.
delete from migrations where migration = ''2015_07_21_000119_create_some_table'';
Debe mencionar algo sobre 1 fila afectada. Ahora verifique que se ha ido escribiendo el primer comando nuevamente:
select * from migrations;
Si no está, salga del entorno Mysql escribiendo
exit;
Ahora prueba '' php artesanal migrate: rollback '' de nuevo y debería funcionar como un encanto :-)
Hay una manera más fácil.
- Recrea esas migraciones de eliminación manualmente.
artisan make:migration
- ejecutar
artisan migrate:reset
para deshacer - Elimina esos archivos ficticios de migaciones que acabas de crear.
- ejecutar la
artisan migrate:refresh
Yo tuve el mismo problema. Cuando estaba contratando php artisan migrate:reset
migrate php artisan migrate:reset
, recibí Class ''CreateImagesTable'' not found
. Y el composer dump-autoload
no ayudó.
Mi solución fue muy fácil:
-
php artisan make:migration create_images_table --create=images
-
composer dump-autoload
- Luego obtuve:
SQLSTATE[HY000]: General error: 1 no such table: images (SQL: drop table "images")
- así que en sqlite escribí: CREATE TABLE `images` (...>` id` INTEGER ...>);
- Y luego
php artisan migrate:reset
- Ahora estoy feliz otra vez
Sé que esto es un poco pasado, pero de hecho hay una mejor manera. Ejecuta lo siguiente en la terminal y no dudes en eliminar ninguno de ellos:
~$ php artisan clear-compiled;php artisan cache:clear;php artisan config:clear;php artisan debugbar:clear;php artisan view:clear;php artisan optimize
Para hacerlo una tarea normal crea un archivo ejecutable llamado artesanal-claro:
#!/bin/bash
php artisan clear-compiled
php artisan cache:clear
php artisan config:clear
php artisan debugbar:clear
php artisan view:clear
php artisan optimize
Resolví mi problema por
- Eliminando toda la migración
- Ejecutando
composer dump-autoload
- Añádelos uno por uno y ejecuta
php artisan migrate
- Eliminando aquellos que causaron que Laravel arrojara un error
- Crea nuevas migraciones para reemplazar las eliminadas
No estoy seguro de por qué funcionó, pero creo que podría haber modificado el nombre de clase de estas migraciones problemáticas en el pasado.
También encontré que el cambio de nombre de la migración con su nombre inicial (el arrojado con el error fatal) también funciona para algunos de ellos.
Para mí, la solución fue que mi nombre de clase dentro de la migración de alguna manera comenzó con una letra minúscula. Cuando cambié el nombre de la clase a mayúsculas, luego ejecuté un composer dump-autoload
, terminó trabajando para mí. Esto está usando Laravel 5.1, por lo que vale.
Me gustó esto: 1. La fila suprimida no existe migración de la tabla de migraciones desde la base de datos 2. Y ejecuta el comando php artesanal migrate: refresh
Esto ayudó a resolver mi problema.
* todos sus datos serán eliminados de las tablas de la base de datos
la versión 5.1.3 mismo problema me lo arregla:
- colocar base de datos todas las tablas
- php artesanal migrate: estado
salida: No migrations found.
ok usarlo
- php artesanal migrate: instalar
- php artesano migrar
salida es:
Migrated: 2016_11_24_093015_dt_some_table
Migrated: 2016_12_05_141004_dt_some_table
Migrated: 2016_12_07_110518_dt_some_table
Migrated: 2016_12_08_141807_dt_some_table
Migrated: 2016_12_13_090832_dt_some_table
este problema esta resuelto
También tuve este problema. Debe recordar: el nombre de la clase debe estar de acuerdo con el nombre del archivo. El cambio de nombre de archivo simple me ayudó :)
Por ejemplo: en el archivo "2014_12_08_100923_create_items_tables.php" debe ser una clase con el nombre "CreateItemsTables" con palabras de CamelCase.
Si el artesano no funciona en absoluto y sigue arrojando este mensaje, sin importar el comando que le des, borra el archivo config.php
carpeta bootstrap/cache
.
Después de eso corre de nuevo
php artisan config:cache