quiero
solo para revertir:
Rolled back: 2015_05_15_195423_alter_table_web_directories
Corro
php artisan migrate:rollback
, 3 de mis migraciones están retrocediendo.
Rolled back: 2015_05_15_195423_alter_table_web_directories
Rolled back: 2015_05_13_135240_create_web_directories_table
Rolled back: 2015_05_13_134411_create_contacts_table
Yo borro
tanto yo web_directories
como mi contacts
mesa sin querer. Nunca quiero que eso suceda, y si puedo revertir solo ese específico, este desastre nunca sucederá.
laravel
laravel-4
laravel-5
database-migration
cyber8200
fuente
fuente
Respuestas:
Si mira en su
migrations
tabla, verá que cada migración tiene un número de lote. Entonces, cuando retrocede, retrocede cada migración que fue parte del último lote.Si solo desea revertir la última migración, incremente el número de lote en uno. Luego, la próxima vez que ejecute el
rollback
comando, solo revertirá esa migración ya que está en un "lote" propio.fuente
migrations
SETbatch
= 2 WHEREmigration
= 'name_of_the_migration';Laravel 5.3+
Retroceda un paso. Nativamente
Y aquí está la página del manual: docs .
Laravel 5.2 y antes
No hay forma de hacerlo sin problemas. Para más detalles, verifique la respuesta de Martin Bean .
fuente
Cada vez que retrocede, obtiene el último lote de migración. usa el comando
fuente
Si no puede hacer lo que le dice @Martin Bean, puede probar con otro truco.
Cree una nueva migración y en ese archivo en el método up () inserte lo que está en el método down () de la migración que desea revertir y en el método down () inserte lo que está en el método up ().
por ejemplo, si su migración original es así
entonces en el nuevo archivo de migración haga esto
y luego ejecute la migración, eliminará la tabla. y si de nuevo quieres recuperarlo, simplemente retrocede.
fuente
mejor usar refrescar migrar
de lo contrario se usa la migración de reversión
para más detalles sobre la migración ver
fuente
La mejor manera es crear una nueva migración y hacer los cambios necesarios en eso.
Solución alternativa en el peor de los casos ( si tiene acceso a DB plus , está de acuerdo con un RESET de los datos de esa tabla ):
your-specific-migration
your-specific-migration
php artisan migrate --path=/database/migrations/your-specific-migration.php
Esto obligará a laravel a ejecutar esa migración específica ya que no existe una entrada al respecto en el historial de migración de Laravel
ACTUALIZACIÓN : La manera de Laravel (Gracias, @ thiago-valente)
Correr:
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
y entonces:
php artisan migrate
Esto volverá a ejecutar esa migración particular
fuente
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
Y finalmentephp artisan migrate
Puede que sea un poco tarde para responder esta pregunta, pero he aquí una forma muy buena, limpia y eficiente de hacerlo. Intentaré ser lo más minucioso posible.
Antes de crear sus migraciones, cree diferentes directorios así:
Luego, al crear sus migraciones, ejecute el siguiente comando (utilizando sus tablas como ejemplo):
o
o
Los comandos anteriores harán que el archivo de migración se encuentre dentro de la ruta de directorio dada. Luego, simplemente puede ejecutar el siguiente comando para migrar sus archivos a través de sus directorios asignados.
* Nota: puede cambiar lote_1 a lote_2 o lote_3 o cualquier nombre de carpeta en el que esté almacenando los archivos de migración. Siempre y cuando permanezca dentro del directorio de base de datos / migraciones o algún directorio especificado.
A continuación, si necesita revertir sus migraciones específicas, puede revertir por lote como se muestra a continuación:
o
o
El uso de estas técnicas le permitirá una mayor flexibilidad y control sobre su (s) base (s) de datos y cualquier modificación realizada en su esquema.
fuente
Retroceda un paso. Nativamente
Rollback de dos pasos. Nativamente
fuente
Use el comando "php artisan migrate: rollback --step = 1" para revertir la migración a 1 paso atrás.
Para obtener más información, consulte el enlace: - https://laravel.com/docs/master/migrations#running-migrations
fuente
Si desea revertir la última migración.
Si desea revertir una migración específica, vaya a la tabla de migración y configure el valor más alto de ese registro en lote. Luego.
Actualmente estoy trabajando en laravel 5.8 si no funciona en ninguna otra versión de laravel, infórmeme.
fuente
Migrar tablas una por una.
Cambie el número de lote de la migración que desea revertir al más alto.
Ejecute migrate: rollback.
Puede que no sea la forma más cómoda de lidiar con proyectos más grandes.
fuente
Si desea modificar el archivo de migración original y volver a migrarlo, puede usar este paquete para migrar. (Aplicable a Laravel 5.4 o posterior)
Primero, instale el paquete en su proyecto Laravel:
Registre el comando en
app/Console/Kernel.php
:Ahora, ejecuta este comando para migrar tu archivo
fuente
php artisan:migrate --path=database/migrations/my_migration.php
. Justo antes de hacerlo, asegúrese de que lamigrations
tabla no tenga una entrada paramy_migration
.algo como esto
fuente
1.) Dentro de la base de datos, diríjase a la tabla de migraciones y elimine la entrada de la migración relacionada con la tabla que desea eliminar.
Ejemplo de imagen de tabla de migración
2.) Luego, elimine la tabla relacionada con la migración que acaba de eliminar de la instrucción 1.
Eliminar ejemplo de imagen de tabla
3.) Finalmente, realice los cambios que desee en el archivo de migración de la tabla que eliminó de la instrucción no. 2 luego ejecute
php artisan migrate
para migrar la tabla nuevamente.fuente
Como se indica en el manual de Laravel , puede revertir un número específico de migraciones utilizando la
--step
opciónfuente
Otra alternativa a las mencionadas si necesita hacer esto varias veces con las mismas migraciones. Personalmente, creo que esto agrega mucha flexibilidad a sus migraciones.
Agregue
database/migrations
a su objeto de carga automática decomposer.json
esta manera:Luego agregue
namespace Database\Migrations;
a todos sus archivos de migración.Luego, ejecuta
$ composer dump-autoload
para actualizar tucomposer.lock
archivo.Luego, suponiendo que su nombre de clase para la migración sea
AlterTableWebDirectories
, puede crear un comando como este:Y escribe esta lógica en tu
handle()
método:Esto hará exactamente lo que quieras. Si desea disminuir el recuento de migración en lugar de eliminarlo, probablemente pueda descubrir cómo cambiar el
DB:raw
comando.Este comando podría ampliarse para permitirle elegir dinámicamente qué migración está descartando al pasar un argumento al comando.
Luego, cuando esté leyendo para migrar ese archivo nuevamente, simplemente puede ejecutarlo
php artisan migrate
y solo migrará ese archivo .Este proceso le permite realizar cambios específicos en las migraciones sin tener que realizar una actualización completa y inicializar cada vez.
Personalmente, necesito hacer eso mucho porque mis semillas son bastante grandes.
fuente
fuente
Si tiene acceso a la base de datos, tiene una solución más fácil. Puede eliminar el registro de la tabla de migraciones y luego simplemente soltar la tabla. con cliente SQL.
Y puede usar
Como muchas respuestas. Y recuerda que el camino es la ubicación. Puede eliminar incluso la migración de módulos de esta manera. (Cualquier migración desde anywhare)
Y recuerde, si está utilizando servidores Linux, tenga cuidado con la mayúsculas y minúsculas. Debe agregar Me gusta / Base de datos / Migraciones con capital inicial.
fuente